這是我的第一篇文章,
我有一些關於 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