GNU/Linux >> Znalost Linux >  >> Linux

.bash_profile není při spuštění Su?

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ý v BASH_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ý v ENV .

Linux
  1. Navrhněte instalaci balíčků při spuštění nedostupného příkazu

  2. [OpenStack-Devstack]:Chyba:Služba n-net neběží při provádění stack.sh

  3. Linux – Kdy nemám zabít -9 A proces?

  1. Vim neběží uvnitř Tmux?

  2. Nelze smazat soubor, i když běží jako root?

  3. Tomcat běží, ale port 8080 neodpovídá

  1. Odebrat sdílenou paměť posix, když se nepoužívá?

  2. GLIBCXX_3.4.9 nebyl nalezen při spuštění ffmpeg z php na lampp serveru

  3. Modul nebyl nalezen, když dělám modprobe