如果我做
su - -c 'mkdir bin' user1
然后我得到
su: /usr/bin/ksh: No such file or directory
因为用户shell设置为ksh
in/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 指定,因此应该在任何地方可用。