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
が読まれるので、
「[.bash_profile] loaded!!」とechoされ問題なく動きます。
となるのですが、LXTerminal上から実行されると、
「[.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アイコンで右クリックして「デスクトップに追加」をクリック。
デスクトップにLXTerminalショートカットが作成されます。
出来上がったLXTerminalショートカットをテキストエディタで開きます。
内容が表示されます。
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;
保存して、起動してみると、
無事起動します!
余談1:同名ファイルで保存できないケースがある
保存するときに、同名ファイルで保存できないケースがあるので、その時は別名で保存してショートカットをもう一つ作りましょう。
余談2:ショートカットのプロパティではコマンドの変更ができないようだ
はじめ、ショートカットのプロパティで変更を試みたところうまくいかなかったので、テキストエディタでの変更にしました。
おわりに
これに辿り着くまでに結構時間がかかったので最早lxterminalは使わずにSSH bashでいくかー?と諦めかけましたが、設定できて良かったです。
せっかくVNCも設定したのに、自由にコマンド叩けないとなると、片手落ちですもんね。
それでは、よきRaspberry Pi Lifeを!