在Linux Shell中遇到這麼一個問題,在Oracle用戶下運行一個shell,運行過程中需要切換到另外一個用戶(load),刪除該用戶的一些文件。
大致思路如下(shell腳本的一部分):
passwd=load
su - load <<!
$passwd
cd ~/backup
rm *.txt
exit
!
順便講下su 和 su - 的區別
前者只是切換了身份,但SHELL環境仍然是原用戶的SHELL;www.linuxidc.com而後者連用戶和SHELL環境一起切換成新用戶的了。只有切換了SHELL環境才不會出現PATH環境變量錯誤。
具體案例:
有人用root登陸。然後切換到oracle用戶下,執行sqlplus 命令 卻報錯:command not found!
就是因為使用的是su ,而不是su -
另外還有個很明顯的區別:
比如說 root用戶在/root/目錄下, su oracle,
切換到了oracle 用戶,但是目錄仍然在/root/下。
如果使用su - oracle
你可以發現目錄也切換到oracle用戶的家目錄下。