一些背景知识:我有一台安装了 SLES 11 的机器。我正在运行一个 bash 脚本,其中有一行是/bin/su $USER -c SOME_CMD
。
不幸的是,无论是哪个用户,SOME_CMD
后面的都会失败。但是,如果省略部分,则一切都会顺利运行。此外,我已经在 RHEL5 上运行了该脚本,并且运行良好。-c
USER=root
/bin/su $USER -c
无论如何,我的问题是为什么会发生这种情况?如果这是权限问题,那么为什么当我以 root 身份/bin/su
和不以 root 身份运行此程序时会得到不同的结果?
PS,如果之前有人问过这个问题,我深感抱歉,我已经在谷歌上搜索了很多次,但没有找到令人满意的答案。
编辑
好的,我明白了,希望如此。我没有使用 ,而是使用 。/bin/su
但/user/bin/sudo -u $MY_USER_1 MY_ENV_VAR="/home/user1" SOME_CMD
我不明白为什么我必须使用sudo
。我习惯以不同的用户身份运行命令,而不必担心权限问题,但我猜它在/su
上不起作用。SLES 11
SuSE
无论如何,感谢所有愿意或帮助过我的人。
答案1
这是因为该命令的正确语法是
/bin/su -c SOME_CMD USER
看man su
。
顺便说一句,您不应该为该变量分配任何东西$USER
,因为它是一个保存当前登录用户名称的系统变量。