我在 ~/.bashrc 中添加了一些行,例如
export JAVA_HOME=/opt/jdk1.6.0_22
我找到了它:
$ source ~/.bashrc
$ env | grep 'JAVA'
JAVA_HOME=/opt/jdk1.6.0_22
然后我在我的主页上名为 scripts 的文件夹下创建了一个基本的 bash 脚本:
#!/bin/bash
echo 'start'
echo $(env | grep HOME)
echo $(env | grep LOGNAME)
echo $(env | grep JAVA)
echo 'exiting'
sleep 5
exit
现在,如果我直接启动它,我会得到预期的输出
$ cd ~/scripts
$ bash 'myScript.sh'
start
HOME=/home/foo/.config
LOGNAME=foo
JAVA_HOME=/opt/jdk1.6.0_22
exiting
但是我需要使用以下命令以不同的方式调用它,但不幸的是它不能以相同的方式工作:
$ lxterminal --command "bash /home/foo/scripts/myScript.sh"
start
HOME=/home/foo XDG_CONFIG_HOME=/home/foo/.config
LOGNAME=foo
exiting
.bashrc 似乎不是通过这种方式获取的。我也尝试了 .profile,但结果相同。使用上述命令调用时,lxterminal 是否获取了另一个文件?
我需要这个命令的原因是因为我想通过我添加到开始菜单的链接/启动器启动这些我自己的脚本,并且它们必须在 lxterminal 窗口上执行。
答案1
尝试强制bash
使用交互模式:
lxterminal --command "bash -i /home/foo/scripts/myScript.sh"
发生这种情况的原因是:
~/.bashrc
以交互模式阅读;~/.bash_profile
,~/.bash_login
并~/.profile
在登录模式下读取。
看调用在男子猛击。