“su”명령에서 사용자 쉘을 무시할 수 있습니까? 얻는다 su: /usr/bin/ksh: No such file

만약 내가한다면

su - -c 'mkdir bin' user1

그때 나는 얻는다

su: /usr/bin/ksh: No such file or directory

사용자 쉘이로 설정 ksh되어 /etc/passwd있고 ksh설치되지 않았기 때문 입니다.

질문

이 경우 사용자로서 명령을 어떻게 수행합니까?



답변

-이후 su를 입력하지 않으면 해당 사용자의 환경이로드되지 않지만 명령은 여전히 ​​해당 사용자로 실행됩니다.


귀하의 실제 문제를 오해 한 것으로 보입니다. 다른 사람들이 말했듯 -s이 실제로 원하는 옵션입니다.


답변

당신이 사용할 수있는:

su -s /bin/sh -c 'mkdir bin' user1

-sSU에 옵션은 / etc / passwd에에 무엇이든 사용에 쉘, 오버라이드 (override)를 지정합니다.

나는 떨어졌다 -프로파일을로드뿐만 아니라, 그것은 아마도 명령에 대한 사용자의 홈 디렉토리로 작업 디렉토리를 변경됩니다, 때문에, 사용자 1의 홈 디렉토리에 현재를 ‘빈’을하지 만들 거라고, 그래서 명령에서 예배 규칙서.


답변

su의 -s /-shell 옵션을 사용하면 사용자 환경의 다른 부분을 유지하면서 사용할 쉘을 선택할 수 있다고 생각합니다. / bin / sh는 posix로 지정되므로 어디서나 사용할 수 있습니다.