jamesfuxk
V2EX  ›  问与答

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

  •  
  •   jamesfuxk · Aug 24, 2015 · 4245 views
    This topic created in 3956 days ago, the information mentioned may be changed or developed.
    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 replies    2015-08-25 02:37:40 +08:00
    clino
        1
    clino  
       Aug 24, 2015 via Android
    su -l 有用吗
    ahcat
        2
    ahcat  
       Aug 24, 2015 via iPhone
    su - 用户 使用该用户的环境变量
    su 用户 使用当前用户的环境变量
    VYSE
        3
    VYSE  
       Aug 24, 2015 via Android
    source /home/scidb/.bashrc
    jamesfuxk
        4
    jamesfuxk  
    OP
       Aug 24, 2015
    @ahcat 我也有看到这方面的帖子,可以我运行起来,如上面,不一样
    jamesfuxk
        5
    jamesfuxk  
    OP
       Aug 24, 2015
    @VYSE 你的想法很有意思,我试试看,谢谢了
    sinxccc
        6
    sinxccc  
       Aug 24, 2015
    "su" 会继承当前用户的所有环境变量,而 "su -" 不会继承。"su -" 用了 login shell 。

    你最后一个例子里 echo 出的 PATH 到底是 scidb 的还是从 root 继承过来的?
    jamesfuxk
        7
    jamesfuxk  
    OP
       Aug 25, 2015
    @sinxcc 这个我知道的, 最后的那个是 scidb 的
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   952 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 22:27 · PVG 06:27 · LAX 15:27 · JFK 18:27
    ♥ Do have faith in what you're doing.