在bash脚本中切换用户时的环境变量

时间:2015-11-19 19:19:19

标签: bash

我有一个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"

1 个答案:

答案 0 :(得分:2)

您当前的shell正在扩展变量。不是sudo shell。 sudo shell看不到它看到文字文本的变量。

你需要阻止它。通过引用部分或全部heredoc开始标记或通过转义heredoc内容中的$来进行引用。