我在理解 linux 中的行为时遇到了一个简单的问题。简而言之,在Linux上,如果我从“桌面快捷方式”调用sh脚本,则该脚本无法查看最新的环境变量(在bashrc中设置)。所以我想知道这个 shell 脚本位于什么范围内?

要创建测试用例并重现:

  • 创建一个简单的 shell 脚本“testme.sh”:

    !/bin/sh
    echo "嗨,这是一个检查环境变量的测试脚本";
    echo "TESTVAR = $TESTVAR";
    读入
    echo "完成";
  • 为上面的脚本创建桌面快捷方式。


    cd ~/桌面
    vi mytest-desktop.desktop

    //mytest-desktop.desktop 的内容是:
    [桌面输入]
    版本=1.0
    类型=应用程序
    名称=TestAbhishek
    exec=/home/abhishek/test/hello.sh
    终端=真
  • 现在更新您的 .bashrc 文件以设置变量

  • 导出 TESTVAR=test_this_variable

  • 打开一个全新的终端并使用它的完整路径执行脚本,例如'~/testme.sh'//这可以从 .bashrc 文件中看到变量 'TESTVAR' 的值。
  • 现在,只需双击并执行桌面快捷方式。
    //这应该打开一个终端并将“TESTVAR”的值打印为空白。
    //所以我的问题是,这个快捷方式打开的终端的父级是谁?

  • 我在 RHL 上试过这个。
    我正在寻找解决方案或解决此问题的方法,希望有人能尽快提供帮助。

    谢谢,
    阿布舍克。

    最佳答案

    请参见bash手册页的 INVOCATION 部分。这是摘录



    长话短说,如果您希望非交互式 shell 设置某些 ENV 变量,则将它们放入 ~/.bash_profile 而不是 ~/.bashrc

    10-07 19:38
    查看更多