Na několika místech jsem četl, že PATH
se nastavuje v /etc/profile
nebo .profile
soubor, který je v domovském adresáři.
Jsou to jediná místa, kde je zasazena cesta? Chci tomu lépe porozumět.
V /etc/profile
soubor, jak říká následující komentář "system-wide .profile file for the Bourne shell"
. Znamená to, že soubory profilu jsou hlavní konfigurační soubory pro bash?
V tomto souboru nevidím PATH
var je vůbec nastaven. V .profile
soubor v domovském adresáři je tento řádek:
PATH="$HOME/bin:$PATH"
Tím se resetuje PATH
podle vzhledu, protože zřetězuje již nastavenou $PATH
řetězec s $HOME/bin:
že jo? Ale pokud etc/profile
a ~/.profile
jsou jediným nastavením souborů PATH
kde je $PATH
pocházející z tohoto řádku kódu, pokud není definován v /etc/profile
?
Může někdo zkušený poskytnout široké a podrobné vysvětlení PATH
variabilní? Díky!
Přijatá odpověď:
Existuje mnoho míst, kde je PATH
lze nastavit.
login
program ji nastaví na výchozí hodnotu. Způsob konfigurace této výchozí hodnoty závisí na systému. Na většině neembedded systémů Linux je převzat z /etc/login.defs
s různými hodnotami pro uživatele root a pro ostatní uživatele. Podívejte se na login(1)
manuál ve vašem systému, abyste zjistili, co dělá.
Na systémech používajících PAM, konkrétně pam_env
modulu lze proměnné prostředí nastavit v celosystémovém souboru /etc/environment
a soubor pro uživatele ~/.pam_environment
.
Většina způsobů, jak se přihlásit (ale ne úlohy cron), spustí přihlašovací shell, který načte konfigurační soubory pro celý systém a pro jednotlivé uživatele. Tyto soubory mohou změnit hodnotu PATH
, obvykle pro přidání položek, ale někdy i jinými způsoby. Které soubory se čtou, závisí na tom, jaký je přihlašovací shell. Shelly ve stylu Bourne/POSIX čtou /etc/profile
a ~/.profile
. Bash čte /etc/profile
, ale u souboru pro uživatele čte pouze první existující soubor z ~/.bash_profile
, ~/.bash_login
a ~/.profile
. Zsh čte /etc/zshenv
, ~/.zshenv
, /etc/zprofile
, ~/.zprofile
, /etc/zlogin
a ~/.zlogin
. Mnoho relací GUI zařizuje načtení /etc/profile
a ~/.profile
, ale to závisí na správci zobrazení, na desktopovém prostředí nebo jiném spouštěcím skriptu relace a na tom, jak je každá distribuce nastavila.