su -l root -c "echo $HOME" 打印我的用户主页

su -l root -c "echo $HOME" 打印我的用户主页

这是我的第一篇文章,

我有一些关于 su - [用户] -c [命令] 的问题

我做了一些搜索,我发现了这个线和这个另一个谁与我的问题有关。

我正在尝试设置用户的环境变量(如果它不存在)。

# This function checks for a user $1, a var nammed $2 to $3 and set it to $3 if $2 not set.
# $1: User to set env
# $2: Var to set
# $3: Value to add in $2 if not exist in $2
function setEnvIfNotDef () {
  if [ ! su ${1} -c "echo "${!2}" | grep "${3}"" ]
  then
    if [ ${2} = "PATH" ]
    then
        su ${1} -c "export ${2}=${!2}:${3}"
    else
        su ${1} -c "export ${2}=${3}"
    fi
  fi
}
setEnvIfNotDef ${USER_NAME} "TEST_HOME" ${INSTALL_PATH}

(USER_NAME 和 INSTALL_PATH 在我的代码中定义^^)

问题是,当我在 Yosemite/CentOS7 上的终端中尝试 su - root -c 命令时。

Elio@Hackintosh-Elio [16:43:41] [Elio] #7975 $ su - root -c "whoami"
Password:
root
Elio@Hackintosh-Elio [16:43:59] [Elio] #7976 $ su - root -c "echo $HOME"
Password:
/Users/Elio

su 后面的 - 等于 -l 对吧?我不应该处于 root 环境中吗?

请帮忙一点? :)

谢谢

答案1

使用单撇号而不是双撇号:

$ su - -c 'echo $HOME'                            
Password: 
/root

相关内容