「パスが通ってない問題だと思ったらターミナル再起動で解決」のしくみの初心者メモ


環境変数はいつ呼ばれているか

rbenvでrubyをインストールした時にそのままログイン状態ではバージョン確認できず、再ログインしたらバージョン確認できた のはなんでか。

ターミナルを起動した時には.bashなんちゃらとかが呼ばれて実行されており、

例えば
.bash_profile
とかがプロンプト出す前にもう呼ばれている。

試しにホームディレクトリで
$ vim .bash_profile する。

echo 'aaa'

を書き込んでターミナル再起動してみる(Command+Nでok)。
すると

Last login: Mon Sep 10 21:24:47 on ttys001
aaa
HelloJTokyo:~ xxxxxx$ 

こんな感じでプロンプト出る前に aaa が出力されてる。

つまり、ログインしてるターミナルで環境変数いじっても、そのままではそのターミナルには反映されない。
ログインし直すと変更が反映されて読み込まれる。

$ rbenv global で環境変数が変わったけど、変わった環境変数がまだ読み込まれてないターミナルでは反映されていない。だから再ログインする。

ログインしながらに新しい環境変数ロードするには(どこに当該環境変数が書かれてるか分かってたら、例えばそれが.bash_profileだったら)$ source .bash_profile する。そうすると直ちに読み込まれる。
ちなみに  $ . .bash_profile でも意味は同じ。

余談

.bash_historyに書かれていること

今まで打ったコマンドラインが記録されてる。
↑↓で出てくるヒストリはこれを順番に出力してるだけ。

ファイルにechoを書いて目印にする

今これが呼ばれて実行されたよ。を知るために、ファイルに 

echo 'このファイル名'

を書いとく。便利。確認したら消すの忘れず。

「分からない」という状態に慣れよう

「分からない」状態を受け入れるマインドを持っとかないとハードモード。

コマンドラインの気づき

$ ls -a -l
は、シンプルに
$ ls -al
で良い。