Mám uživatele, řekněme user1
, který má úpravy ve svém .bash_profile
, jeden z nich mění PATH
, např.:export PATH=/some/place:$PATH
. Tato změna funguje dobře, pokud se přihlásím jako user1
nebo proveďte su - user1
.
Ale pokud se pokusím spustit příkaz přes su
jako root
, např.:
su -c test.sh oracle
(test obsahuje echo $PATH
)
Zdá se, že nemá upravenou PATH
(nebo rootova PATH
, když na to přijde). Také jsem zkusil zkopírovat .bash_profile
na .profile
, bez úspěchu.
Proč se to děje?
Přijatá odpověď:
Pomocí su
bez -l
nebo -
spustí bash
jako interaktivní, ale nepřihlašovací shell, který nečte ani jeden ze souborů, které jste zadali. Použijte -l
nebo -
nebo vložte příslušnou konfiguraci do /root/.bashrc
.
Rychlé shrnutí konfiguračních souborů:
- Přihlašovací shell (
-l
/--login
) čte/etc/profile
nejprve a poté první, co najde:~/.bash_profile
,~/.bash_login
a~/.profile
. - Interaktivní, ale nepřihlašovací prostředí (
-i
) čte/etc/bash.bashrc
a~/.bashrc
, v tomto pořadí (pokud--rcfile
volba je použita a říká mu, aby se podíval jinde). - Neinteraktivní shelly, např. spuštěn z jiného programu bez použití
-l
nebo-i
flags, čte soubor zadaný vBASH_ENV
proměnná prostředí. - Při spuštění jako
sh
jako přihlašovací shell bude číst/etc/profile
a~/.profile
, v tomto pořadí. - Při spuštění jako
sh
jako interaktivní nepřihlášení čte soubor zadaný vENV
.
Změnit časový limit úlohy Systemd Stop v konfiguraci Nixos?
Existují nějaké nevýhody používání Mount –bind jako náhrady za symbolické odkazy?