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/profilenejprve a poté první, co najde:~/.bash_profile,~/.bash_logina~/.profile. - Interaktivní, ale nepřihlašovací prostředí (
-i) čte/etc/bash.bashrca~/.bashrc, v tomto pořadí (pokud--rcfilevolba je použita a říká mu, aby se podíval jinde). - Neinteraktivní shelly, např. spuštěn z jiného programu bez použití
-lnebo-iflags, čte soubor zadaný vBASH_ENVproměnná prostředí. - Při spuštění jako
shjako přihlašovací shell bude číst/etc/profilea~/.profile, v tomto pořadí. - Při spuštění jako
shjako 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?