ストックドッグ

KatoTakahiro。金融系の会社で働くSEが株やPython、その他諸々について書いています。サービスも運営してます→http://fmbrain.work

環境変数パス(PATH)がよくわからいのでunset $PATHしてみた

Linuxを使用している人なら、いや、WindowsでもOS Xでも、環境変数が何たるかをわかっている人なら、このタイトルのヤバさはわかるはずです。

普通に考えたら、絶対にやってはいけないコマンドをうってみました。

そもそもPATHを通すってなんだ?

pythonをインストールしても、pipをインストールしても、PATHを通す作業って必ず、必要です。

しかし、私はめんどくさがりなのでパスを通す必要がある場合は、いつも記事内に貼ってあるPATHをコピペで済ましていました。

export PATH=$PATH:/var/www/html

このコードさえあれば、理解していないくてもとりあえず動くようになるからそれでいいや、と済ましていました。


と、言ってもPATHを通すってことの意味が全くわからないわけではありませんでした。

なんとなく、「PATHを通すこと、どのディレクトリにいても指定のコマンドが実行できるようになる」ぐらいのことは頭でわかっていました。

頭でわかっていても、実際に自分でファイルを作って実行するコードを書いて、環境変数PATHを通すということはやったことなかったので、曖昧な理解にとどまっていました。


わかっていると思っていても、詳細を詰められると実はわかっていないことってたくさんあります。

私にとってPATHを通すは、まさに詳細を詰められると実はわかっていない領域でした。

厳しい環境にあえて身を置く

ということで、まずPATHが通っているということがどれだけありがたいことかを理解するためにPATHを消してみました。

PATHがない世界に身を置くことで、PATHの本質を理解しようとそういう魂胆です。

※もし、Linux初心者の方であれば、絶対に真似しないでください

※私はVPSでこれを実行しています。
※最悪、Linuxが壊れたらインストールし直せばいいか、くらいの軽い気持ちなのでこのコマンドをうてるだけです。
VPSって実験するには本当にいい場所です。

unset $PATH

このコマンドを入力してlsコマンドを入力すると...

#ls

Command 'ls' is available in '/bin/ls'
The command could not be located because '/bin' is not included in the PATH environment variable.
ls: command not found

ウソやろ、ls使えへんやん。

他にもcd、vi、find、cat全部使えへん。

エラーをよく見ると、/bin/lsのディレクトリに行けばlsが実行できると書いてあります。

ということは/bin/lsと打てば、lsコマンドが実行できるはず。

/bin/ls

無事にlsでき、何を打ってもcommand not foundしか返ってきないし、PATHが通っていない世界の厳しさも理解できました。


パス(PATH)の確認と設定方法は? - Pocketstudio.jp Linux Wiki

この後上のURLを見ながら、ちょくちょくlsに環境変数PATHを通したりしていました。

さて元に戻すにはどうしようか

あいにく$PATHのコピーはとっていなかったので、困ったものです。

全てのPATHを自分で通し直すにも、もともと設定してあったPATHもわかりません。


LinuxではPATHはユーザーごとに管理しています。

su user_name

でユーザーを変更すると、環境変数はもっていけません。

逆に環境変数を持って行きたいときは。

su -

と、ハイフンをつけると持っていけます。

なので、rootに切り替えてrootの環境変数をコピーしてしまえばいいか、という結論に至りました。

環境変数を無事元に戻したあたりで...

そもそもlsのソースコードはどんなん?

環境変数を通していて、そもそもlsのソースコードが気になりました。

/bin/lsをcatしても、文字化けして見れなかったで、ググるとこんな記事が。

techblog.yahoo.co.jp

yahoo!japanでは、新人にlsのソースコードを読ませるそう。

コードも短く、ぴったりだそうだ。

4月から新入社員の私は、同い年で同じことをしているのかと思うと、よし自分も読んでみようという気持ちになり、ソースコードを眺めて、そっと画面を閉じた。

また、今度にしよう、思ったより大変そうだ。

そろそろLinuxを使い始めてから、1年ほど経つのですが、私はLinuxの1%も理解していないようです。

今までpythonのプログラムを書くためだけのOSだったので、さしてLinux側をさわることもありませんでした。

しかし、サーバーを立てる等のことをしていると、自然とLinux側の知識も必要となり、今必死に勉強しています。


触り始めるとこれまた面白いもので、時間がどんどん吸い込まれていきます。

こうやって私のゴールデンウィークLinuxいじりに吸い込まれていくことでしょう。

以上、終わり。