我有一个bash脚本,需要在脚本中以不同的用户身份执行命令。但是当我切换用户时,我注意到环境变量没有被重置。例如,如果我将脚本作为user1运行并切换到user2,则$ HOME环境变量仍然引用user1。缺少什么?
#!/usr/bin/env bash
whoami # Prints "user1"
sudo -i -u user2 << EOF
whoami # Prints "user2"
echo ${LOGNAME} # Prints "user1", NOT "user2"
echo ${HOME} # Prints "/home/user1", NOT "/home/user2" as expected
EOF
whoami # Prints "user1"
答案 0 :(得分:2)
您当前的shell正在扩展变量。不是sudo
shell。 sudo shell看不到它看到文字文本的变量。
你需要阻止它。通过引用部分或全部heredoc开始标记或通过转义heredoc内容中的$
来进行引用。