shell腳本里切換用戶執行命令的注意事項

功能說明:用root用戶執行一個腳本,腳本里需要切換到普通用戶DT去執行其他命令,其中就用到了EOF,用法如下:

#!/bin/bash
su - DT<<EOF
cd apache-tomcat-7.0.54/bin
sh startup.sh
EOF

當時以爲su - DT就跟在交換界面執行一樣會把環境也切換過去,所以在分界符EOF裏用的是相對路徑,結果一運行就報錯:

-bash: line 8: cd: apache-tomcat-7.0.54/bin: 沒有那個文件或目錄

然後就做了個測試,腳本如下:

#!/bin/bash
echo "`pwd`"
su - DT<<EOF
echo "`pwd`"
EOF

結果如下:

[root@localhost ~]# sh test.sh 
/root
/root

從這裏可以看出來su - DT<<只是把用戶切過去了但環境變量還是root,所以在EOF分界符裏的語句都得用絕對路徑。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章