Come dire quali sono i miei file di avvio per sh o bash?


2

Da questa domanda capisco che a seconda del sistema operativo she mi bashcomporto diversamente.

Facendo enve aliasposso dire che:

Ogni volta che apro un Terminale OSX o eseguo bashla variabile $SHELL=/bin/bashesegue le source ~/.profilechiamate source ~/.bashrc. Se eseguo $shi comandi source ~/.profilee source ~/.bashrcnon sono chiamato, quindi nessuno degli alias è definito.

Ora su un server Linux o UNIX usando basho sh:

Come posso sapere quali script vengono eseguiti all'accesso?


Risposte:


2

Per prima cosa identifica la tua shell, come notato in un'altra risposta, questo è semplicemente fatto tramite il comando ps ...

$ ps
  PID TTY          TIME CMD
 3360 pts/2    00:00:00 bash
 3702 pts/2    00:00:00 ps

Per essere sicuri di quali file vengono letti, è necessario esaminare il sistema a cui si sta effettuando l'accesso. La shell "bash" ha molte opzioni "se questo", quindi "fai" altrimenti "fai qualcos'altro". Per vedere una descrizione completa di quali file provengono vedere qui , ma in genere l'elenco è ...

  • / Etc / profile
  • $ HOME / .bash_profile
  • $ HOME / .bashrc (se configurato nel file .bash_profile)
  • $ HOME / .bash_logout (al logout, non al login)

Per la shell bourne ('sh') generalmente si procede come segue quando si accede

  • / Etc / profile
  • $ HOME / .profile

Quello che mi piace fare sui sistemi con cui non ho familiarità è una riga in tutti i file di avvio che mi aspetto di leggere per verificare se l'output standard è collegato a un terminale e se viene visualizzato il nome del file. In questo esempio lo sto usando nel file .bash_profile.

[ -t 1 ] && echo "reading .bash_profile"

Funziona con bash o sh (e anche con alcuni altri derivati). Questo aiuta perché so cosa viene letto, quando e se ricevo errori, so da quale file provengono (gli errori prima del primo messaggio con eco sono probabilmente dovuti al processo di accesso stesso o dal sistema / etc / profile a livello di sistema.

Inoltre, non dimenticare che puoi sempre creare i tuoi file di avvio personalizzati e includerli tu stesso includendoli in un file che è già di provenienza.


Grazie per la risposta dettagliata e la raccomandazione. Vedo che OSX è molto diverso rispetto a Linux. Lezione del giorno:cat \etc\profile
ilciavo

1
  1. /etc/passwd l'ultimo campo di / etc / passwd ti dirà la tua shell di login.
  2. ps l'esecuzione di ps ti dirà anche (e livello di shell)

      PID TTY          TIME CMD
     5802 pts/0    00:00:00 bash
     6292 pts/0    00:00:00 ps
    

grazie, dove sono source ~/.profile, source ~/.bashrcessere chiamato con basho sh?
ilciavo,
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.