Vraag Wat zijn de functionele verschillen tussen .profile .bash_profile en .bashrc


Wat zijn de functionele verschillen tussen de .profile, .bash_profile en .bashrc -bestanden?


119
2018-04-20 15:42


oorsprong




antwoorden:


.bash_profile en .bashrc zijn specifiek voor bash, terwijl .profile wordt door veel shells gelezen in afwezigheid van hun eigen shell-specifieke configuratiebestanden. (.profile werd gebruikt door de originele Bourne-schaal.) .bash_profile of .profile wordt gelezen door inlogshells, samen met .bashrc; alleen lezen in subschalen .bashrc. (Tussen taakcontrole en moderne venstersystemen, .bashrc alleen wordt niet veel gebruikt. Als je gebruikt screen of tmux, schermen / vensters gebruiken meestal subshells in plaats van login shells.)

Het idee hierachter was dat een eenmalige setup werd gedaan door .profile (of shell-specifieke versie daarvan), en per-shell dingen door .bashrc. U wilt bijvoorbeeld in het algemeen slechts eenmaal per sessie omgevingsvariabelen laden in plaats van ze te laten meppen telkens wanneer u een subshell in een sessie start, terwijl u altijd uw aliassen wilt (die niet automatisch worden gepropageerd zoals omgevingsvariabelen zijn).

Andere opvallende shell-configuratiebestanden:

/etc/bash_profile (terugvallen /etc/profile) wordt vóór de gebruiker gelezen .profile voor systeem-brede configuratie, en eveneens /etc/bashrc in subshells (geen fallback voor deze). Veel systemen, waaronder Ubuntu gebruiken ook een /etc/profile.d map met shell-scriptlets, die zijn . (source) -ed van /etc/profile; de fragmenten hier zijn per-schaal, met *.sh toepassen op alle Bourne / POSIX-compatibele shells en andere uitbreidingen die van toepassing zijn op die specifieke shell.


101
2018-04-20 15:51





.profiel

.profile is voor dingen die niet specifiek gerelateerd zijn aan Bash, zoals omgevingsvariabelen PATH en vrienden, en zou altijd beschikbaar moeten zijn.

Bijvoorbeeld, .profile moet ook worden geladen bij het starten van een grafische bureaubladsessie.


.bashrc

.bashrc is voor het configureren van het interactieve Bash-gebruik, zoals Bash aliases, je favoriet instellen editor, instellen van de Bash prompt, enz.


.bash_profile

.bash_profile is om ervoor te zorgen dat beide dingen binnenkomen .profile en .bashrc worden geladen voor login shells.

Bijvoorbeeld, .bash_profile kan iets eenvoudigs zijn zoals

. ~/.profile
. ~/.bashrc

Als je zou weglaten .bash_profile, enkel en alleen .profile zou worden geladen.


31
2018-04-17 06:15



Dit beantwoordde mijn vraag voor Mac OS X. - Jake Toronto


Volgens de bash man-pagina wordt .bash_profile uitgevoerd voor login shells, terwijl .bashrc wordt uitgevoerd voor interactieve niet-login shells.

Dus, wat is een inlog- of niet-login-shell?

Wanneer u zich aanmeldt (type gebruikersnaam en wachtwoord) via console, zit u op de machine of op afstand via ssh: .bash_profile wordt uitgevoerd om uw shell te configureren voor de initiële opdrachtprompt. Maar als u al bent ingelogd op uw machine en een nieuw terminalvenster (xterm) opent in Gnome of KDE, dan wordt .bashrc uitgevoerd vóór de prompt van de Windows-opdracht. .bashrc wordt ook uitgevoerd wanneer u een nieuwe bash-instantie start door / bin / bash in een terminal te typen.

Een uitzondering op de richtlijnen voor het terminalvenster is de Terminal.app van Mac OS X, die standaard een login-shell uitvoert voor elk nieuw terminalvenster, waarbij .bash_profile wordt aangeroepen in plaats van .bashrc. Andere GUI terminal-emulators kunnen hetzelfde doen, maar de meeste hebben de neiging dit niet te doen.

Meer hier http://www.joshstaiger.org/archives/2005/07/bash_profile_vs.html


21
2018-04-03 12:52