Если я сделаю
su - -c 'mkdir bin' user1
тогда я получаю
su: /usr/bin/ksh: No such file or directory
потому что пользовательская оболочка установлена ksh
в /etc/passwd
и ksh
не установлена.
Вопрос
Как я могу выполнять команды как пользователь в таком случае?
/etc/passwd
исходит из шек.Ответы:
Если вы не поставите
-
после,su
то он не будет загружать среду этого пользователя, но команды все равно будут выполняться от имени этого пользователя.Похоже, я неправильно понял вашу настоящую проблему. Как уже говорили другие,
-s
это вариант, который вы, вероятно, на самом деле хотите.источник
Ты можешь использовать:
-s
Вариант Су определяет оболочку для использования, отвергая все , что находится в / и т.д. / пароль.Я удалил команду
-
из вашей команды, потому что, помимо загрузки профиля, он, вероятно, изменит рабочий каталог на домашний каталог пользователя для команды, поэтому вы будете создавать 'bin' в домашнем каталоге user1, а не в своем текущем каталог.источник
Я считаю, что опция -s / - shell для su позволяет вам выбрать оболочку для использования, сохраняя при этом другие части пользовательской среды, / bin / sh определяется posix, поэтому должен быть доступен везде.
источник