su -l root -c "echo $HOME" マイユーザーのホームページを印刷します。

su -l root -c

これは私の最初の記事です。

su - [user] -c [command]についていくつかの質問があります。

私は少し検索してこのようなものを見つけました。ワイヤーこのもう一つ私の問題に関連する人は誰ですか?

ユーザーの環境変数が存在しない場合は、これを設定しようとします。

# 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 と同じです。そうですか?ルート環境にはいけませんか?

助けてください? :)

ありがとう

ベストアンサー1

二重アポストロフィの代わりに単一のアポストロフィを使用してください。

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

おすすめ記事