尝试以另一个用户身份从另一个Shell脚本执行一个Shell脚本

时间:2019-09-13 12:10:13

标签: bash ubuntu

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,但未在/ home / test3中创建test3.4文件,并且没有收到任何错误消息。知道是否可以做到吗?

1 个答案:

答案 0 :(得分:1)

问题是$testsh由原始Shell扩展,而不是sudo运行的Shell。您需要引用EOF令牌来防止here-doc中的变量扩展。

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

但是我不确定为什么需要该变量,您可以这样做:

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