Non riesco a trovare .bash_profile
in Ubuntu 14.04 nella mia /home/user
directory. Ho usato il ls -a
comando per vedere il .bash_profile
, ma non esiste un file del genere.
Non riesco a trovare .bash_profile
in Ubuntu 14.04 nella mia /home/user
directory. Ho usato il ls -a
comando per vedere il .bash_profile
, ma non esiste un file del genere.
Risposte:
Ubuntu usa ~/.profile
.
puoi creare il tuo .bash_profile
in Ubuntu ma .profile
non verrà letto.
Se leggiamo il contenuto .profile:
cat ~/.profile
# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.
Quindi usa ~/.profile
invece di~/.bash_profile
vim ~/.bashrc
allora. ~/.bashrc
Quando si richiama una shell di login bash cercherà i suoi file di configurazione in questo ordine:
[0] ~/.bash_profile
[1] ~/.bash_login
[2] ~/.profile
Dopo aver trovato il primo, smette di ricerca per gli altri, quindi se c'è un .bash_profile
mio $HOME
bash non cercherà .bash_login
e .profile
più.
Da questi tre nomi di file, Ubuntu per impostazione predefinita utilizza .profile
è possibile rinominarlo .bash_profile
se ti piace:
mv ~/.profile ~/.bash_profile
Ora, se apriamo una nuova shell bash usando bash -l
, su - $USER
, sudo -u $USER -i
o qualsiasi altro comando che corre bash come shell di login, ~/.bash_profile
andranno di provenienza.
Ciò di cui ho parlato fino ad ora si applica solo a Bash stesso, quando si accede al sistema da una GUI, il gestore del display è responsabile per l'approvvigionamento dei file corretti.
Ubuntu usa gdm3
come display manager, se diamo un'occhiata a: /etc/gdm3/Xsession
possiamo vedere che nessuno dei file avrà origine tranne .profile
::
# First read /etc/profile and .profile
for file in /etc/profile "$HOME/.profile"; do
if [ -f "$file" ]; then
source_with_error_check "$file"
fi
done
quindi se stai usando una GUI per accedere, tieni il file sotto il .profile
nome, altrimenti potresti perdere alcune variabili e impostazioni nei tuoi ambienti.
Immagino che l'opzione migliore sia la creazione di un link simbolico a .profile
:
ln -s ~/.profile ~/.bash_profile
Ora i tuoi dati vivono .profile
, gdm
non perdono nulla, bash carica ciò .bash_profile
che è effettivamente .profile
e modificando ognuno di essi ottieni lo stesso risultato.
Se non lo hai, .profile
prendine una copia da qui:
cp /etc/skel/.profile ~/.profile
o
# Remember the note above
cp /etc/skel/.profile ~/.bash_profile
man bash
su Ubuntu descrive ancora come cercherà prima .bash_profile.
.bash_profile
prima non riesce a trovarlo (perché non esiste), quindi cerca .bash_login
non riesce a ritrovarlo (perché Ubuntu non utilizza questi due nomi) alla fine cerca .profile
e sì, eccolo lì. Quindi se crei un .bash_profile
in ~
allora stai sovrascrivendo quello di Ubuntu ~/.profile
, è il comportamento predefinito di bash che qui non è stato modificato nulla.
.bash_profile
, non viene letto. Mi sono appena reso conto che questo è perché Ubuntu non utilizza più 'Bash' come shell di login della GUI. Utilizza invece "Dash". Penso che questo sia vero dal 18.04.
Ciò significa che il file non esiste. Tuttavia, è possibile creare il file ed bash
eseguire / origini il file se bash
viene invocato come shell di accesso. Quindi straordinariamente accedi tramite una shell (ad esempio tramite ssh
).
Se vuoi che il contenuto venga eseguito ogni volta che apri un terminale, devi .bashrc
invece modificare il file.
/etc/skel/
directory.
.bash_profile
manca (e non funziona) su Ubuntu nei commenti su altre risposte.
La risposta migliore da usare ~/.profile
invece di ~/.bash_profile
non ha funzionato per me.
Modifica ha .bashrc
funzionato
Appena:
vim ~/.bashrc
Nota: sto usando Ubuntu WSL.
~/.profile
semplicemente non caricato di default in Ubuntu 18.04
Se intendi il .bashrc lo troverai nella tua cartella home. Se non è presente, è possibile copiarlo dalla cartella / etc / skel alla cartella principale.
Se hai bisogno di maggiori informazioni su questo argomento, visita la pagina di stefaan lippens.
~/.profile
invece.