关于su的问题

norzss 2003-09-24 11:34:22
遇到如下问题:
以root登陆执行:
su - user1 -c "echo $LOGNAME"
执行结果:root
建立一脚本:test.sh,内容如下“
echo $LOGNAME

执行:su - user1 -c "test.sh"
执行结果为user1

我的理解是都应该输出user1
哪位大侠给个解释,谢谢!
...全文
42 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
fierygnu 2003-09-25
  • 打赏
  • 举报
回复
对引号处理不清楚的,建议读:
Unix® Shell Programming, Third Edition
Chapter 6. Can I Quote You on That?

概括如下:
1、单引号:所有内容都留给应用解释
2、双引号:除Dollar signs,Back quotes,Backslashes外,所有内容留给应用解释。
3、Backslash相当于将跟随字符用单引号处理。

此书可以到www.itebook.net的p2p服务器上下载英文版,不要积分。
logpushpin 2003-09-25
  • 打赏
  • 举报
回复
双引号和单引号一个叫做强..一个叫弱.., 我搞不清楚啊, 给讲讲吧,
fierygnu 2003-09-25
  • 打赏
  • 举报
回复
呵呵,这样su - user1 -c 'echo $LOGNAME'是不是就对了?
你用双引号,$LOGNAME在执行su之前已经被替换为root了。单引号可以避免这个问题。
klbt 2003-09-24
  • 打赏
  • 举报
回复
关注,帮你顶。

23,121

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧