〜/ .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ウィンドウで実行する必要があるためです。
bash
にインタラクティブモードを使用するように強制してみてください。
lxterminal --command "bash -i /home/foo/scripts/myScript.sh"
これは次の理由で発生します:
~/.bashrc
はインタラクティブモードで読み取られます。
~/.bash_profile
、~/.bash_login
および~/.profile
はログインモードで読み取られます。
man bash のInvocationを参照してください。