web-dev-qa-db-ja.com

〜/ .bashrcは新しいlxterminalウィンドウで供給されません

〜/ .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ウィンドウで実行する必要があるためです。

3
Luca Borrione

bashにインタラクティブモードを使用するように強制してみてください。

lxterminal --command "bash -i /home/foo/scripts/myScript.sh"

これは次の理由で発生します:

  • ~/.bashrcはインタラクティブモードで読み取られます。

  • ~/.bash_profile~/.bash_loginおよび~/.profileはログインモードで読み取られます。

man bashInvocationを参照してください。

4
cYrus