gpt4 book ai didi

bash - 尝试从另一个 shell 脚本作为另一个用户执行 shell 脚本

转载 作者:行者123 更新时间:2023-12-04 18:40:01 25 4
gpt4 key购买 nike

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

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

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

最佳答案

问题是 $testsh由原来的 shell 扩展,而不是由 sudo 运行的 shell .您需要报价 EOF用于防止 here-doc 中的变量扩展的 token 。

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

但我不确定你为什么需要那个变量,你可以这样做:
sudo -i -u test3 /home/test3/testsh.sh

关于bash - 尝试从另一个 shell 脚本作为另一个用户执行 shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57923395/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com