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