一些背景:我有一台安装了SLES 11的机器。 我正在运行一个bash脚本,它的一行是/bin/su $USER -c SOME_CMD 。
不幸的是,无论USER=root还是其他用户, -c后面的SOME_CMD都会失败。 但是,如果/bin/su $USER -c部分被省略,那么一切运行顺利。 而且,我已经在RHEL5上运行了这个脚本,它工作的很好。
无论如何,我的问题是为什么会发生? 如果这是一个权限问题,那么为什么当我以root身份运行这个/bin/su而没有得到不同的结果呢?
PS道歉,如果别人之前问过,我已经做了很多的search,没有得到任何满足。
编辑好吧,我知道了,我希望如此。 而不是运行/bin/su我用/user/bin/sudo -u $MY_USER_1 MY_ENV_VAR="/home/user1" SOME_CMD 。 不过,我不明白为什么我必须使用sudo 。 我习惯使用su作为不同的用户来运行一个命令,而不用担心权限问题,但是我猜这在SLES 11 / SuSE上是不行的。
无论如何,感谢所有想要或帮助我的人。
这是因为命令的正确语法是
/bin/su -c SOME_CMD USER
见man su 。
你不应该给variables$USER ,BTW分配任何东西,因为它是一个系统variables,它保存了当前login用户的名字。