bashagisce diversamente se si tratta di una shell o di un normale linguaggio di programmazione (come perlo python).
In base alla progettazione, le impostazioni in ~/.bash_profile, ~/.bashrcecc. Consentono agli utenti di impostare le cose quando bashsvolge il ruolo di shell (shell di login, shell interrattiva). Pensa all'ambiente che hai in una xterm(shell interattiva) o nelle sshsessioni (shell di accesso) o nelle console (shell di accesso).
D'altra parte, bashc'è anche un potente linguaggio di programmazione, che pensa a molti script per la gestione dei servizi systemd, che richiede un diverso stile di lavoro. Ad esempio, quando uno sviluppatore sta scrivendo uno script di sistema o un bashprogramma, non gli piace procurarsi ~/.bash_profileautomaticamente l'utente . È un programma normale, non una shell. Un normale programma (compresi i bashprogrammi) erediterebbe naturalmente le impostazioni dall'attuale funzionamento (shell), ma non le imposta .
Se scriviamo un programma per cronin bash- sembra essere scritto bash; infatti, siamo in grado di scrivere in pythono di perlo di qualsiasi altra programmazione Lingua- allora possiamo avere la possibilità di fonti bashs' ~/.bash_profile(leggi: l'impostazione della shell dell'utente, che sembra appena essere la stessa lingua del linguaggio di programmazione):
[ -f /home/user/.bash_profile ] && . /home/user/.bash_profile
Tuttavia, cosa succede se quel particolare utente non usa bashcome shell? Lui / lei può utilizzare zsh, ksh, fish, ecc Quindi, che la pratica avrebbe in realtà non funziona quando la scrittura del programma per uso pubblico.
Quindi, puoi procurarti ~/.bash_profilese pensi che funzionerà. Ma, qui, non si tratta se siamo in grado di eseguire il source di un file, si tratta di come le cose dovrebbero funzionare nel sistema: il concetto di design . In breve: dovremmo vedere bashcome qualcosa che ha 2 ruoli: shell e linguaggio di programmazione . Quindi tutto sarà molto più facile da capire.
.bashrcha una linea che ne impedisce l'esecuzione in shell non interattive.