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分界符里的語句都得用絕對路徑。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM