Переключение пользователя и вывод содержимого переменной

Я пишу сценарий 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 не установлен. Возможно, вы не экспортируете переменную в профиле, поэтому она работает в командной строке, а не в скрипте.

Другие вопросы по тегам