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