環境変数パス(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の環境変数をコピーしてしまえばいいか、という結論に至りました。
環境変数を無事元に戻したあたりで...