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_profile
načte.profile
a načte.bashrc
pokud 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
), …