Переключение пользователя и вывод содержимого переменной
Я пишу сценарий bash и хочу переключиться на другого пользователя, перейдите в каталог, указанный MYDIR в файле пользователей bash_profile, и перечислите его содержимое.
В настоящее время у меня есть:
read username
su - app${username} -c ls $MYDIR
Вывод ничего не значит, я думаю, что это проблема с чтением $MYDIR из профиля пользователя, так как ручная работа работает нормально, например
#su - appadmin
#ls $MYDIR
2 ответа
Вам нужно указать команду, которая будет выполнена.
На данный момент оболочка заменяет $MYDIR
со значением из среды звонящего. Также -c
только передает следующий аргумент для выполнения, т.е. ls
без $MYDIR
- вам нужно поместить кавычки вокруг всей удаленной команды:
su - app${username} -c 'ls $MYDIR'
+ Изменить $MYDIR
в ${MYDIR:?}
, Это приведет к ошибке, если MYDIR не установлен. Возможно, вы не экспортируете переменную в профиле, поэтому она работает в командной строке, а не в скрипте.