
我在我的centos linux 機器上的.bash_profile 非root 帳戶中設定了一個腳本,以在sudo su 之後更改我的PS1,但因為sudo su 實際上是創建一個新會話,所以腳本當然會停止,並且我的PS1 保持不變,儘管我的.bash_profile是說要更改它,這裡沒有任何問題,但是在 sudo su 之後有沒有任何方法可以執行命令(在我的例子中更改我的 PS1)?我嘗試將腳本也放入 .bashrc 中,並且相同。
答案1
在我看來,堆疊sudo
會su
造成混亂。
對我來說,為 root 創建正確環境的最可靠方法,包括設定正確的 PATH 以及相關文件中的其他設定/root/
是sudo -i
請閱讀手冊頁man su
和man sudo
因為 PATH 和其他會話和環境變數有很多微妙的變化,或者不作為預設值或透過特定的開關進行更改。
su -
請注意和之間的區別 su
,例如,通常將 sudo 配置/etc/sudoers
為抑制某些環境變數...
這張表(以及整篇文章)給出了乍看之下似乎相似的命令的一些差異:
corrupted by user's
HOME=/root uses root's PATH env vars
sudo -i Y Y[2] N
sudo -s N Y[2] Y
sudo bash N Y[2] Y
sudo su Y N[1] Y
[1] PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
probably set by /etc/environment
[2] PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin