Durante l'installazione di RVM viene visualizzato il seguente messaggio:
* WARNING: You have '~/.profile' file, you might want to load it,
to do that add the following line to '/home/dotancohen/.bash_profile':
source ~/.profile
Sono preoccupato perché il mio file ~/.profile contiene xmodmap ~/.Xmodmap
che ovviamente non voglio eseguire (scambiando i miei tasti CapsLock ed ESC) ogni volta che apro una nuova shell.
Perché i saggi sviluppatori di RVM potrebbero suggerire di procurarsi .profile
in .bash_profile
?
Risposta accettata:
.profile
e .bash_profile
sono identici in termini di quando devono essere eseguiti:vengono eseguiti quando accedi. La differenza è che solo bash esegue .bash_profile
; Le shell in stile Bourne (dash, ksh, ecc.) eseguono .profile
. Bash stesso esegue .profile
se .bash_profile
non esiste.
Anche se hai bash come shell di accesso, .profile
è spesso quello che viene eseguito quando accedi in modalità grafica: molte distribuzioni configurano lo script di avvio della sessione X per l'esecuzione in sh
e carica .profile
.
Da qui il consiglio di usare .profile
invece di .bash_profile
per fare cose come definire le variabili d'ambiente. A meno che tu non abbia assolutamente bisogno di funzionalità specifiche di bash, metti tutto in .profile
. Ma anche se lo fai, c'è un motivo per mantenere un .bash_profile
, ovvero quando bash lo carica, non carica .bashrc
, anche se interattivo. Quindi, per la maggior parte delle persone, ~/.bash_profile
dovrebbe consistere in queste due righe:
. ~/.profile
case $- in *i*) . ~/.bashrc;; esac
Non dovresti eseguire xmodmap
da .profile
. Questo non viene eseguito quando apri una nuova shell, ma viene eseguito, ad esempio, quando accedi in remoto con SSH con inoltro X11. Sfortunatamente, non esiste un file standard che viene caricato quando accedi in modalità grafica. Debian carica ~/.xsessionrc
(Penso che questo si applichi a tutti i display manager, eccetto Gdm che carica ~/.xprofile
invece); altre distribuzioni hanno configurazioni diverse. Se hai bisogno della portabilità della distribuzione incrociata, potrebbe essere più semplice configurare il tuo ambiente desktop per eseguire xmodmap
quando inizia. Se tutto ciò che stai facendo è scambiare CapsLock e Ctrl, questo può essere fatto con le impostazioni XKB a cui la maggior parte dei moderni ambienti desktop fornisce un'interfaccia.