Raspberry PiのLXTerminalで~/.bash_profileが読まれないのでなんとかするメモ

Raspberry PiはGUIが分かりやすくLXTerminalというターミナルも使えるのですが、nodeを入れて$PATHでパスを通したのにうまく反映されないという困ったことがおきました。

Raspberry PiのLXTerminalで~/.bash_profileが読まれないのでなんとかするメモです。

症状

現在、~/.bash_profileは

echo "[.bash_profile] loaded!!"
PATH=$PATH:$HOME/bin
BASH_ENV=$HOME/.bashrc
export PATH=/usr/local/node/bin:$PATH
test -r ~/.bashrc && . ~/.bashrc

となっていて、nodeをインストールした/usr/local/node/binも設定しています。

これをSSHで外部からつなぐと、当然 ~/.bash_profile が読まれるので、

image_20150427_221743_17

「[.bash_profile] loaded!!」とechoされ問題なく動きます。

となるのですが、LXTerminal上から実行されると、

image_20150427_222018_18

「[.bash_profile] loaded!!」も出ませんしnodeも通ってません。どうも.bash_profileを読んでいないようなのです。

原因と対処法

Raspberry Pi • View topic – Adding to LXTerminal $PATH

この記事をよく読んでみたところ、LXTerminalは初期状態だとlogin-shellされてないのでbash_profileも発動していないとのこと。

対処法としては、LXTerminalに以下のオプションをつけて実行するとよいようです。

RVM: Ruby Version Manager – Integrating RVM with LXTerminal

lxterminal -e "bash -il"

bashの部分の引数 i と l は見慣れませんが、Man page of BASH で調べたところ、

  • -i
    • オプションが指定されると、 bash は 対話的(interactive) に動作します。
  • -l
    • ログインシェル (後述の 起動 セクションを参照) として起動されたかのように bash を動作させます。

となっていました。-lが省略形でない–loginの紹介ばかりで確証を得るのが難しかったのは秘密。

いつもオプション付き起動ができるように、デスクトップにショートカットを作る

このままだと、毎度このコードを入力してしまうので手間です。いつもオプション付き起動ができるようにデスクトップにショートカットを作ります。

メニューからLXTerminalまでカーソルを持っていきます。LXTerminalアイコンで右クリックして「デスクトップに追加」をクリック。

image_20150427_220939_4

デスクトップにLXTerminalショートカットが作成されます。

image_20150427_220939_5

出来上がったLXTerminalショートカットをテキストエディタで開きます。

image_20150427_220939_6

内容が表示されます。

image_20150427_220939_7

LXTerminalショートカットの内容を変更する

LXTerminalショートカットの中身は以下のようになっています。

[Desktop Entry]
Encoding=UTF-8
Name=Terminal
Name[af]=LXTerminal
Name[ar]=LXTerminal

(略)

Comment[zh_TW]=\u4f7f\u7528\u547d\u4ee4\u5217
TryExec=lxterminal
Exec=lxterminal
Icon=lxterminal
Type=Application
StartupNotify=true
Categories=GTK;Utility;TerminalEmulator;

Execのところを修正します。

[Desktop Entry]
Encoding=UTF-8
Name=Terminal
Name[af]=LXTerminal
Name[ar]=LXTerminal

(略)

Comment[zh_TW]=\u4f7f\u7528\u547d\u4ee4\u5217
TryExec=lxterminal
Exec=lxterminal -e "bash -il"
Icon=lxterminal
Type=Application
StartupNotify=true
Categories=GTK;Utility;TerminalEmulator;

保存して、起動してみると、

image_20150427_234043_19

無事起動します!

余談1:同名ファイルで保存できないケースがある

保存するときに、同名ファイルで保存できないケースがあるので、その時は別名で保存してショートカットをもう一つ作りましょう。

余談2:ショートカットのプロパティではコマンドの変更ができないようだ

はじめ、ショートカットのプロパティで変更を試みたところうまくいかなかったので、テキストエディタでの変更にしました。

image_20150427_220939_2

おわりに

これに辿り着くまでに結構時間がかかったので最早lxterminalは使わずにSSH bashでいくかー?と諦めかけましたが、設定できて良かったです。

せっかくVNCも設定したのに、自由にコマンド叩けないとなると、片手落ちですもんね。

それでは、よきRaspberry Pi Lifeを!