我正在使用 El Capitan 10.11.6,需要使用以用户身份su -c
运行。问题是,我的 macOS 版本上没有这个标志。无法代表其他较新版本的 macOS(目前无法访问较新的操作系统)。还有其他选择吗?我需要在脚本和命令行中使用它。psql
_postgres
更正一下,比以前更仔细地阅读了手册页后发现su
确实有一个-c
标志,但是它似乎对我不起作用。运行su _postgres -c 'mkdir /Users/leetbacoon/folder'
不起作用,也不会在终端上显示任何内容。
答案1
在我的 Debian 中man 1 su
这样写道:
的参数
-c
将导致大多数命令解释器将下一个参数视为命令。该命令将由/etc/passwd
为目标用户指定的 shell 执行。
在 macOS 上,情况很可能是相同的。您提供的用户su
可能已/bin/false
在 中指定/etc/passwd
。这对于系统用户来说很正常。这样就没有人可以直接以此类用户身份登录。这是一件好事。
我猜你是以 root 身份调用该命令,因此没有密码提示。幕后发生的事情是:
/bin/false -c 'mkdir /Users/leetbacoon/folder'
此命令完全无提示,只有其退出代码 ( 1
) 表示失败。您的su
报告的退出值相同。
使用sudo
:
sudo -u _postgres mkdir /Users/leetbacoon/folder
_postgres
可能不允许在 内创建目录/Users/leetbacoon/
。如果是这样,您将收到 的错误mkdir
。但mkdir
它本身仍会运行。