尝试从另一个 shell 脚本以其他用户身份执行 shell 脚本


Ubuntu 18.04

我有一个 shell 脚本:doit.sh 将 shell 脚本复制到另一个用户的主文件夹,然后尝试运行它。我尝试了多种组合,但它不起作用。

doit.sh:

#!/usr/bin/env bash
sudo mv testsh.sh /home/test3
sudo chown test3:test3 /home/test3/testsh.sh
sudo -i -u test3 bash << EOF
testsh='testsh.sh'
exec $testsh
EOF

testsh.sh:

#!/bin/bash
echo "export RAILS_ENV='rails_env'" |  tee test3.4 >/dev/null

testsh.sh 已移至/home/test3,但 test3.4 文件未在/home/test3 中创建,我没有收到任何错误消息。知道这是否可以做到吗?

问题是$testsh是由原始 shell 扩展的,而不是由sudo运行的 shell。您需要引用EOF令牌以防止在此处文档中进行变量扩展。

sudo -i -u test3 bash << 'EOF'
testsh='testsh.sh'
exec $testsh
EOF

但我不确定为什么你需要这个变量,你可以这样做:

sudo -i -u test3 /home/test3/testsh.sh

最新更新