~/.bashrc 不是来自新的 lxterminal 窗口

Luc*_*one 3 bash environment-variables bashrc

我在 ~/.bashrc 中添加了一些行,例如

export JAVA_HOME=/opt/jdk1.6.0_22
Run Code Online (Sandbox Code Playgroud)

我来源:

$ source ~/.bashrc
$ env | grep 'JAVA'
JAVA_HOME=/opt/jdk1.6.0_22
Run Code Online (Sandbox Code Playgroud)

然后我在我家中名为 scripts 的文件夹下创建了一个基本的 bash 脚本:

#!/bin/bash

echo 'start'
echo $(env | grep HOME)
echo $(env | grep LOGNAME)
echo $(env | grep JAVA)
echo 'exiting'

sleep 5
exit
Run Code Online (Sandbox Code Playgroud)

现在,如果我直接启动它,我会得到预期的输出

$ cd ~/scripts
$ bash 'myScript.sh'
start
HOME=/home/foo/.config
LOGNAME=foo
JAVA_HOME=/opt/jdk1.6.0_22
exiting
Run Code Online (Sandbox Code Playgroud)

但是,我需要使用以下命令以不同的方式调用它,不幸的是它不能以相同的方式工作:

$ lxterminal --command "bash /home/foo/scripts/myScript.sh"
start
HOME=/home/foo XDG_CONFIG_HOME=/home/foo/.config
LOGNAME=foo

exiting
Run Code Online (Sandbox Code Playgroud)

似乎 .bashrc 不是以这种方式获得的。我也尝试过 .profile ,但结果相同。使用上述命令调用时,是否有另一个由 lxterminal 提供的文件?

我需要这个命令的原因是因为我想通过添加到开始菜单的链接/启动器启动这些我自己的脚本,并且它们必须在 lxterminal 窗口上执行。

cYr*_*rus 5

尝试强制bash使用交互模式:

lxterminal --command "bash -i /home/foo/scripts/myScript.sh"
Run Code Online (Sandbox Code Playgroud)

发生这种情况是因为:

  • ~/.bashrc 以交互模式读取;

  • ~/.bash_profile,~/.bash_login~/.profile在登录模式下读取。

调用男人庆典