如果我做
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”,而不是当前目录。