Non riesco a trovare .bash_profile in Ubuntu


67

Non riesco a trovare .bash_profilein Ubuntu 14.04 nella mia /home/userdirectory. Ho usato il ls -acomando per vedere il .bash_profile, ma non esiste un file del genere.


1
Dovresti usare ~/.profileinvece.
muru,

2
possibile duplicato di Non riesco a trovare .bash_profile
Alaa Ali

1
È abbastanza comune che manchino alcuni file di configurazione (o persino directory). In tal caso, il software che dovrebbe leggerli utilizzerà una configurazione predefinita e / o leggerà altre fonti per recuperare la configurazione. Se vuoi modificare un file di configurazione che non esiste, crealo prima.
Bakuriu,

Risposte:


84

Ubuntu usa ~/.profile.

puoi creare il tuo .bash_profilein Ubuntu ma .profilenon verrà letto.

Se leggiamo il contenuto .profile:

cat ~/.profile

produzione

# ~/.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 ~/.profileinvece di~/.bash_profile


.profile non ha funzionato per me. Ho dovuto modificare .bashrc vim ~/.bashrcallora. ~/.bashrc
Nahid

L'uso di .bash_profile non funziona su Ubuntu. Usa Dash come shell di login della GUI, non Bash, quindi bash_profile non viene letto.
Jonathan Hartley,

Se modifichi il tuo .profile, devi disconnetterti e riconnetterti per vedere le modifiche.
Jonathan Hartley,

8

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_profilemio $HOMEbash non cercherà .bash_logine .profilepiù.

Da questi tre nomi di file, Ubuntu per impostazione predefinita utilizza .profileè possibile rinominarlo .bash_profilese ti piace:

mv ~/.profile ~/.bash_profile

Ora, se apriamo una nuova shell bash usando bash -l, su - $USER, sudo -u $USER -io qualsiasi altro comando che corre bash come shell di login, ~/.bash_profileandranno di provenienza.

Importante notare:

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 gdm3come display manager, se diamo un'occhiata a: /etc/gdm3/Xsessionpossiamo 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 .profilenome, 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, gdmnon perdono nulla, bash carica ciò .bash_profileche è effettivamente .profilee modificando ognuno di essi ottieni lo stesso risultato.

.Profile mancante?

Se non lo hai, .profileprendine una copia da qui:

cp /etc/skel/.profile ~/.profile

o

# Remember the note above
cp /etc/skel/.profile ~/.bash_profile

Ma, se Bash sta cercando ~ / .bash_profile per primo, allora come mai non lo sta facendo in Ubuntu? Ubuntu ha modificato Bash? Questo sembra strano. man bashsu Ubuntu descrive ancora come cercherà prima .bash_profile.
Jonathan Hartley,

Cerca .bash_profile prima non riesce a trovarlo (perché non esiste), quindi cerca .bash_loginnon riesce a ritrovarlo (perché Ubuntu non utilizza questi due nomi) alla fine cerca .profilee sì, eccolo lì. Quindi se crei un .bash_profilein ~allora stai sovrascrivendo quello di Ubuntu ~/.profile, è il comportamento predefinito di bash che qui non è stato modificato nulla.
Ravexina,

Bene, questo è quello che ho pensato anche all'inizio! E ciò che descrivi accade su RHEL. Ma su Ubuntu no. Se creo un .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.
Jonathan Hartley,

Ti manca il punto qui. In realtà stiamo parlando della bash stessa, quello che sto dicendo qui è che Ubuntu crea '.profile' e non gli altri, quindi se apriamo una nuova shell bash (login shell) che è l'ordine di leggere questi file, no ' non importa quale distro stiamo usando. :)
Ravexina,

Se i lettori rinominano .profile in .bash_profile come suggerisce la tua risposta, quindi per le persone su Ubuntu, quel file non verrà letto all'accesso, né all'apertura di un terminale. Hai rotto il loro sistema. L'unico modo in cui il file verrà letto è se avviano sessioni bash con l'arg "--login" per renderlo esplicitamente una shell di login. Ciò non accadrà mai automaticamente sul loro desktop.
Jonathan Hartley,

5

Ciò significa che il file non esiste. Tuttavia, è possibile creare il file ed basheseguire / origini il file se bashviene 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 .bashrcinvece modificare il file.


puoi avere un'idea del perché manca il file .bash_profile?
Roledenez,

Puoi copiarlo dalla /etc/skel/directory.
Frantique,

È un disegno di design canonico. Ma ciò non significa che non possa farlo.
caos,

Ho spiegato il motivo che .bash_profilemanca (e non funziona) su Ubuntu nei commenti su altre risposte.
Jonathan Hartley,

2

La risposta migliore da usare ~/.profileinvece di ~/.bash_profilenon ha funzionato per me.

Modifica ha .bashrcfunzionato

Appena:

vim ~/.bashrc

Nota: sto usando Ubuntu WSL.


In Linux originale, il .profile viene applicato quando si accede alla GUI o ci si collega in remoto o si accede alla console, vale a dire dopo aver premuto ctrl + shift + F2. Dovrebbe rappresentare l'ora iniziale in cui si accede alla macchina, creando una shell che è genitore di tutti gli altri processi creati successivamente. Ho il sospetto che su WSL non ci sia nulla di tutto ciò, quindi il tuo .profile potrebbe non essere mai letto.
Jonathan Hartley,

stessa cosa per me. ~/.profilesemplicemente non caricato di default in Ubuntu 18.04
javapowered

0

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.

http://stefaanlippens.net/bashrc_and_others

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.