Používám Linux Mint. Můj přihlašovací shell (cat /etc/passwd | grep myUserName ) je bash.
Poté, co spustím své grafické desktopové prostředí a spustím z něj emulátor terminálu, vidím, že .bash_profile není ze zdroje (proměnné prostředí, které jsou export ed v něm nejsou nastaveny). Ale pokud se přihlásím z textové konzole (ctrl +alt +F1 ) nebo ručně spusťte bash -l z emulátoru terminálu .bash_profile funguje dobře.
Mýlím se, když si myslím, že .bash_profile by měl být zdroj při spuštění X a veškerém export ‘ed vars by měl být k dispozici v terminálu, spuštěný z X?
P.S. Umístění všeho do .bashrc a získáváte jej z .bash_profile není dobrý nápad (https://stackoverflow.com/questions/902946/):materiál prostředí by měl být získáván pouze jednou.
Přijatá odpověď:
Soubor ~/.bash_profile čte bash, když se jedná o přihlašovací shell. To je to, co získáte, když se přihlásíte v textovém režimu.
Když se přihlásíte pod X, spouštěcí skripty se spouštějí pomocí /bin/sh . Na Ubuntu a Mintu /bin/sh je pomlčka, ne bash. Dash a bash mají stejné základní funkce, ale dash se drží těchto základních funkcí, aby byl rychlý a malý, zatímco bash přidává spoustu funkcí za cenu potřeby více zdrojů. Je běžné používat pomlčku pro skripty, které nepotřebují další funkce, a bash pro interaktivní použití (ačkoli zsh má spoustu hezčích funkcí).
Většina kombinací správce zobrazení (program, do kterého zadáváte své uživatelské jméno a heslo) a desktopového prostředí je ~/.profile z přihlašovacích skriptů v /etc/X11/Xsession , /usr/bin/lightdm-session , /etc/gdm/Xsession nebo podle toho, co je použitelné. Vložte tedy definice proměnných prostředí do ~/.profile . Ujistěte se, že používáte pouze syntaxi, kterou pomlčka podporuje.
Co byste tedy měli kam umístit?
-
Dobrý
.bash_profilenačte.profilea načte.bashrcpokud je shell interaktivní.. ~/.profile if [[ $- == *i* ]]; then . ~/.bashrc; fi -
V
.profile, vložte definice proměnných prostředí a další nastavení relace, jako jeulimit. - V
.bashrc, vložte interaktivní nastavení bash, jako jsou aliasy, funkce, dokončení, klávesové zkratky (které nejsou v.inputrc), …