我跑
ssh root@myhost "sh -x" < myremotecommands.sh
其中 myremotecommands.sh 包含:
#!/bin/sh
sudo su
apt-get update
sudo su -l -p jenkins
whoami
但是命令 whoami 返回“root”。我需要成为用户 jenkins 才能执行一些安装。
如何在脚本中间切换到用户 jenkins ?
您只需使用带有“-s /bin/bash”参数的“su”命令。之所以需要它,是因为不应该以交互方式使用 jenkins 用户,因此它没有定义 bash。
su jenkins -s /bin/bash
之后,“whoami”命令会将您报告为“jenkins”用户。
使用$USER
. 这将为您提供您登录的用户名。Whoami
返回您当前操作的用户。
问题解决了:
#!/bin/sh
sudo su
apt-get update
su jenkins <<HERE
whoami
echo usr=$USER
HERE
将输出:
jenkins
usr=root
来源: http ://www.daniweb.com/software-development/shell-scripting/threads/14498