su -l root -c "echo $ HOME" печатает мой пользовательский дом

Это мой первый пост,

У меня есть некоторые вопросы о 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 определены в моем коде ^^)

Проблема в том, что когда я пытаюсь выполнить команду su-root -c в моем терминале на Yosemite / CentOS7.

 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 правильно? Я не должен быть в корневой среде?

Немного помогите пожалуйста? 🙂

Благодаря

One Solution collect form web for “su -l root -c "echo $ HOME" печатает мой пользовательский дом”

Используйте одиночный апостроф вместо двойного:

 $ su - -c 'echo $HOME' Password: /root 
  • В команде `sudo find`, как я могу убедиться, что команда` -exec` запускается как обычный пользователь?
  • Различия между sudo и su в наследующей среде
  • как ssh -Y, а затем su - <другой пользователь> и все еще перенаправляет X-приложения на вашу локальную машину
  • Что отличает «su - username», а затем команда и команда «sudo -u username»,
  • Почему я могу переключиться на пользователя, но не запускать сценарий, поскольку он
  • как передать переменную среды в sudo su
  • Почему я не могу запустить команду как пользователь, имеющий / bin / false в качестве оболочки входа?
  • Восстановить пароль su после изменения / etc / shadow
  • Как получить права root для конкретного пользователя, если у нас есть пароль root?
  • Почему «su -c <command> &», по-видимому, позволяет команде запускаться в фоновом режиме без зависания
  • su - пользователь не работает для пользователей без пароля
  • Любое специальное разрешение ssh удаленная команда, работающая над файлом fifo (так называемый канал)?
  • Linux и Unix - лучшая ОС в мире.