Linux 下的 su - 以后的 PATH 的环境变量的问题

2015-08-24 05:03:08 +08:00
 jamesfuxk
1.首先在 root 的权限在运行:

root@marva:/# su - scidb -c "echo $PATH"
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin


2.接下来我用了测试脚本:
#!/bin/bash
echo $PATH

运行脚本:
root@marva:/# su - scidb -s /tmp/scidbshell.sh
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games


这两处的环境变量都不一样。

3.接下来我切换到 scidb 的用户权限下来查看 scidb 的 PATH 的值
root@marva:/# su scidb
scidb@marva:/$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/opt/scidb/14.12/bin:/opt/scidb/14.12/share/scidb


我有个命令必须要在有后面的那个环境中才能运行成功, 不然会报没找到命令。。。

只要让环境变量和切换到 scidb 的用户下一样,命令就可以运行成功了。

有哪位前辈知道解决方法的,希望告知答案
3460 次点击
所在节点    问与答
7 条回复
clino
2015-08-24 07:00:29 +08:00
su -l 有用吗
ahcat
2015-08-24 07:22:12 +08:00
su - 用户 使用该用户的环境变量
su 用户 使用当前用户的环境变量
VYSE
2015-08-24 08:33:08 +08:00
source /home/scidb/.bashrc
jamesfuxk
2015-08-24 12:50:45 +08:00
@ahcat 我也有看到这方面的帖子,可以我运行起来,如上面,不一样
jamesfuxk
2015-08-24 12:51:05 +08:00
@VYSE 你的想法很有意思,我试试看,谢谢了
sinxccc
2015-08-24 12:56:08 +08:00
"su" 会继承当前用户的所有环境变量,而 "su -" 不会继承。"su -" 用了 login shell 。

你最后一个例子里 echo 出的 PATH 到底是 scidb 的还是从 root 继承过来的?
jamesfuxk
2015-08-25 02:37:40 +08:00
@sinxcc 这个我知道的, 最后的那个是 scidb 的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/215447

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX