export PATH=""... が読めなくなっていてショックだったので記事にしてみた


背景

本日、珍しく新しいアプリを作ろうと思い、rails newをしたら、こんなエラーに当りまして...。
解決策として示されていた、すごい基本的なこのコマンドが読めなくなっていてショックだったので、記事にして忘れないようにし、供養ようと思います...。

$ export PATH="$HOME/.rbenv/shims:$PATH"

最近、LINUXコマンド全然触っていなかったもんなー。。。。とほほ。

export

前から行きます。まず export とは、指定した変数を環境変数にするコマンドです。環境変数とは、OS共通で使える変数です。(環境変数についてはこちらの説明が分かりやすかったです。)

例えば、こんなふうに使えます。

$ export VAR          # VAR を環境変数にする
$ export VAR="MacOS"  # 環境変数VARに値「MacOS」を設定する

なお、環境変数は慣習的に大文字で書くようなのですが、小文字でも登録できます。

PATH, $PATH, $HOME など

現在の環境に設定されている環境変数はprintenvコマンドでわかります。

$ printenv
... # 略
LANG=ja_JP.UTF-8
... 
PATH=/Users/username/.rbenv/shims:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
...
PWD=/Users/username

今回のコマンドで設定しようとしたPATHもありました!よく使う、PWDもここで設定されていたのね^^
登録時にはPATHのように$のいらない書き方で登録できますが、参照時には$PATHのように$マークが必要です。

$ PATH
zsh: command not found: PATH
$ $PATH
/Users/usernsme/.rbenv/shims:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

そして”パスを通す(セミコロンが出てくる部分)”

最後に、下記のセミコロンでつないでいる部分ですが、

$ export PATH="$HOME/.rbenv/shims:$PATH"

これがいわゆる「パスを通す」部分で、セミコロンの前の部分に、セミコロンのあとの部分を設定するコマンドになります。つまり

$ export PATH="$この変数が指し示す値に:この値を代入"

なので、今回はHOME/.rbenv/shimsで指し示す値に、$PATHの中身を追加するコマンドとなります。

ここまで調べたところで、以前こんな親切記事をブックマークしていたことを思い出しました。
Linux入門 ~「パスを通す」とは~

今改めて読み直してみると、ここまで書いた内容とほぼ同じ内容でしたしかも、上記の記事の方がしっかり説明してくれています。

その他

ところで、ここまでコマンドを読み解いて、私の課題の解決に $ export PATH="$HOME/.rbenv/shims:$PATH"が役立つか不安になってきました...。拙速に設定しなくてよかったです明日また調べて頑張ろうと思います