可以忽略“su”命令中的用户shell?

如果我做

su - -c 'mkdir bin' user1 

然后我得到

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

因为在/etc/passwd中将用户shell设置为ksh ,并且未安装ksh

在这种情况下如何作为用户传输命令?

如果在su之后不放置-那么它将不会加载该用户的环境,但是命令仍将以该用户的身份运行。


看来我误解了你的实际问题。 正如其他人所说的-s是你可能真正想要的选项。

我相信su的-s / – shell选项可以让你在保留用户环境的其他部分的情况下selectshell,/ bin / sh由posix指定,因此应该在任何地方都可用。

您可以使用:

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

su的-s选项指定要使用的shell,覆盖/ etc / passwd中的任何内容。

我放弃了-从你的命令,因为,除了加载configuration文件,它可能会改变工作目录到用户的主目录的命令,所以你会在user1的主目录创build“bin”,而不是当前目录。