这是一个创建于 3346 天前的主题,其中的信息可能已经有所发展或是发生改变。
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 的用户下一样,命令就可以运行成功了。
有哪位前辈知道解决方法的,希望告知答案
7 条回复 • 2015-08-25 02:37:40 +08:00
|
|
1
clino 2015-08-24 07:00:29 +08:00 via Android
su -l 有用吗
|
|
|
2
ahcat 2015-08-24 07:22:12 +08:00 via iPhone
su - 用户 使用该用户的环境变量 su 用户 使用当前用户的环境变量
|
|
|
3
VYSE 2015-08-24 08:33:08 +08:00 via Android
source /home/scidb/.bashrc
|
|
|
4
jamesfuxk 2015-08-24 12:50:45 +08:00
@ ahcat 我也有看到这方面的帖子,可以我运行起来,如上面,不一样
|
|
|
6
sinxccc 2015-08-24 12:56:08 +08:00
"su" 会继承当前用户的所有环境变量,而 "su -" 不会继承。"su -" 用了 login shell 。
你最后一个例子里 echo 出的 PATH 到底是 scidb 的还是从 root 继承过来的?
|