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

#!bin、bashpasswdusernamesuusernameecho"登录成功"登录上username后并没有输出“登录成功”,我怎样在执行完su命令后再执行ec... #!bin、bash
passwd username
su username
echo "登录成功"
登录上username后并没有输出“登录成功”,我怎样在执行完su命令后再执行echo命令
展开
 我来答
脱咐苛源D0
2015-08-06 · TA获得超过1.2万个赞
知道大有可为答主
回答量:5829
采纳率:79%
帮助的人:759万
展开全部
可以使用 <<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
百度网友541eb8f1a
2012-02-14 · 超过40用户采纳过TA的回答
知道答主
回答量:125
采纳率:0%
帮助的人:124万
展开全部
function pritf()
{
su username -c "echo 登录成功"
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
umbrellauc
2012-02-13 · TA获得超过437个赞
知道小有建树答主
回答量:330
采纳率:0%
帮助的人:179万
展开全部
su username -c "echo 登录成功"
追问
我现在写了一个这样的函数
function pritf()
{
echo "登录成功"
}
想在su命令中调用
su - username -c "printf"
我知道这样是错误的,怎么改
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
分离的镜花水月
2020-08-14
知道答主
回答量:9
采纳率:0%
帮助的人:6743
展开全部
这个问题的关键在于su命令和echo命令的发起者是su执行之前的用户,也就是设su和echo次序或同时执行时,发起者是user,当su执行成功时,shell已经切到root下,echo的执行结果依然在原来的user用户的shell里
此时你退回到user就能看到echo的执行结果了。
可见linux的安全性和权限管理的严谨。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
njsunxi
2012-02-21
知道答主
回答量:20
采纳率:0%
帮助的人:12.1万
展开全部
su - username
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式