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文件,并且没有收到任何错误消息。知道是否可以做到吗?
答案 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