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

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

如果我做

su - -c 'mkdir bin' user1

然后我得到

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

因为用户shell设置为kshin/etc/passwd并且ksh没有安装。

问题

在这种情况下,我该如何作为用户执行命令?

答案1

如果您不添加-后面的选项su,它将不会加载该用户的环境,但是命令仍然会以该用户的身份运行。


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

答案2

您可以使用:

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

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

-从您的命令中删除了,因为除了加载配置文件之外,它还可能会将工作目录更改为该命令的用户主目录,因此您将在 user1 的主目录中创建“bin”,而不是当前目录中。

答案3

我相信 su 的 -s/--shell 选项可以让您选择要使用的 shell,同时保留用户环境的其他部分,/bin/sh 由 posix 指定,因此应该在任何地方可用。

相关内容