从桌面快捷方式调用 shell 脚本时无法读取 .bashrc
我在理解 Linux 中的行为时遇到一个简单的问题。简而言之,在 Linux 上,如果我从“桌面快捷方式”调用 sh 脚本,则该脚本无法看到最新的环境变量(在 bashrc 中设置)。所以我想知道这个 shell 脚本位于什么范围内?
要创建测试用例并重现:
创建一个简单的 shell 脚本“testme.sh”:
!/bin/sh echo "嗨,这是一个检查环境变量的测试脚本"; 回声“TESTVAR = $TESTVAR”; 读入 回显“完成”;
为上面的脚本创建一个桌面快捷方式。
<前> cd ~/桌面 vi mytest-desktop.desktop //mytest-desktop.desktop 的内容是: [桌面入口] 版本=1.0 类型=应用 名称=TestAbhishek exec=/home/abhishek/test/hello.sh 终端=真- 现在更新您的 .bashrc 文件以设置变量
export TESTVAR=test_this_variable
打开一个全新的终端并使用其完整路径(如“~/testme.sh”)执行脚本 //这可以从 .bashrc 中看到变量“TESTVAR”的值 打开一个全新的终端并
现在,只需双击并执行桌面快捷方式即可。 //这应该打开一个终端并将“TESTVAR”的值打印为空白。 //所以我的问题是,这个快捷方式打开的终端的父级是谁?
我已经在 RHL 上尝试过了。 我正在寻找这个问题的解决方案或 aw/a,希望有人能尽快提供帮助。
谢谢, 阿布舍克。
I have a simple problem understanding a behavior in linux. In short, on linux if i invoke my sh script from a 'Desktop Shortcut' then the script cannot see the latest environment variables (set in bashrc). So i was wondering that in what scope is this shell script located ?
To create a testcase and reproduce:
Create a simple shell script 'testme.sh' :
!/bin/sh echo "Hi This is a test script checking the env var"; echo "TESTVAR = $TESTVAR"; read in echo "Done";
create a desktop shortcut for the script above.
cd ~/Desktop vi mytest-desktop.desktop //Contents for mytest-desktop.desktop are : [Desktop Entry] Version=1.0 Type=Application Name=TestAbhishek Exec=/home/abhishek/test/hello.sh Terminal=true
- Now update your .bashrc file to set the variable
export TESTVAR=test_this_variable
Open a brand new terminal and execute the script using it's complete path like '~/testme.sh' //This can see the value for variable 'TESTVAR' from the .bashrc file.
Now, simply double click and execute the Desktop shortcut.
//This should open a terminal and print out value for 'TESTVAR' as blank.
//So my question is, who is the parent for the terminal opened by this shortcut?
I've tried this on RHL.
Im looking for a solution or a w/a for this problem, hope someone can help soon.
Thanks,
Abhishek.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
请参阅 bash 联机帮助页的 INVOCATION 部分。这是摘录
长话短说,如果您希望非交互式 shell 设置某些 ENV 变量,请将它们放入
~/.bash_profile
而不是~/.bashrc
See the INVOCATION section of the bash manpage. Here is an excerpt
Long story short, if you want non-interactive shell's to have certain ENV vars set, then put them in
~/.bash_profile
instead of~/.bashrc