linux命令怎么让su后的命令执行

#!bin、bash
passwd username
su username
echo "登录成功"
登录上username后并没有输出“登录成功”,我怎样在执行完su命令后再执行echo命令

可以使用 <<EOF 参数实现。

脚本内容:
cat test.sh
代码如下:

#!/bin/bash
su - test <<EOF
pwd;
exit;
EOF

当然也可以用下面的命令来执行

代码如下:

su - test -c "pwd"

ps:
切换用户只执行一条命令的可以用: su - oracle -c command
切换用户执行一个shell文件可以用:su - oracle -s /bin/bash shell.sh
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-02-14
function pritf()
{
su username -c "echo 登录成功"
}
第2个回答  2012-02-13
su username -c "echo 登录成功"追问

我现在写了一个这样的函数
function pritf()
{
echo "登录成功"
}
想在su命令中调用
su - username -c "printf"
我知道这样是错误的,怎么改

第3个回答  2020-08-14
这个问题的关键在于su命令和echo命令的发起者是su执行之前的用户,也就是设su和echo次序或同时执行时,发起者是user,当su执行成功时,shell已经切到root下,echo的执行结果依然在原来的user用户的shell里
此时你退回到user就能看到echo的执行结果了。
可见linux的安全性和权限管理的严谨。
第4个回答  2012-02-21
su - username
相似回答