概要
- 何となくパスを通すという言葉を解釈していた
- コマンドの実態はバイナリファイルであり、バイナリファイルの格納場所のエイリアスを登録するのがパスを通すという解釈だった
- もう少し調べたかったので、調べた内容をまとめる
参考資料:Linux入門 ~「パスを通す」とは~
参考資料2:Pathを通すとは、環境変数とは
パスを通すとは
- 概要に記載の理解であっていた
- 環境変数($PATH)にコマンド検索パスを追加すること
仕組み
- シェルにパスが通っているコマンドを入力する
printenv
- 環境変数$PATHをシェルが参照する
- 以下は$PATHの中身(例であってすべてがこうなっているわけではない)
/Users/Islanders-Treasure/.rbenv/shims:/Users/Islanders-Treasure/.pyenv/bin:/Users/Islanders-Treasure/.phpbrew/php/php-5.6.23/bin:/Users/Islanders-Treasure/.phpbrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/local/bin:/usr/bin/xcodebuild:/usr/local/sbin
- パスは:で分けられているので分解すると以下
/Users/Islanders-Treasure/.rbenv/shims
/Users/Islanders-Treasure/.pyenv/bin
/Users/Islanders-Treasure/.phpbrew/php/php-5.6.23/bin
/Users/Islanders-Treasure/.phpbrew/bin
/usr/local/bin
/usr/bin
...省略
- 通っているパスを参照する
- printenvは
/usr/bin/
直下なので、/usr/bin/printenvをさしているのと同じことになる
パスの通し方
- /xxx/binを追加する
- :$PATHを忘れるとPATHを/xxx/binで上書くので他の設定がすべてなくなる
export PATH=/xxx/bin:$PATH #PATHに追加したいパスと元のPATHを連結することで追加できる
環境変数とは
Terminal環境内における変数のこと- printenvで環境変数を確認できる
- 下記を見てもわかる通り、
PATH
は環境変数の一部である
2021/6/24 追記
@angel_p_57 さんからご指摘いただいた通り、あまり環境変数の意味について理解して書いていなかったので再度調べてまとめました!
ありがとうございました!
改めて環境変数とは
参考資料:Wikipedia/環境変数
IT用語辞典曰く
環境変数とは、OSが設定値などを永続的に保存し、利用者や実行されるプログラムから設定・参照できるようにしたもの
- OS上で利用する変数ということ
-
変数名=設定値
の構成 - プロセス間でデータを共有するための仕組みとして存在する
- 例えば、親プロセスが参照している環境変数は、その子プロセスも参照できる
PWD=/Users/Islanders-Treasure
SHELL=/bin/zsh
PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
COLORTERM=truecolor
HOME=/Users/Islanders-Treasure
USER=Islanders-Treasure
LOGNAME=Islanders-Treasure
ZSH=/Users/Islanders-Treasure/.oh-my-zsh
PAGER=less
LESS=-R
LC_CTYPE=en_US.UTF-8
LSCOLORS=Gxfxcxdxbxegedabagacad
_=/usr/bin/printenv
- SHELL:使用するシェル
- PWD:カレントディレクトリ
等
環境変数を追加する
- exportコマンドで追加する
- よって、exportコマンドは環境変数を追加するコマンドである
- 参考:export - 環境変数を定義・リスト表示する - Linuxコマンド
- 慣例として定数は大文字であることが望ましいので大文字で設定するようにする
export SAMPLE="sample"
永続的に環境変数を設定する
- 上記のexportコマンドでは現在立ち上げているシェルでしか使用できない一時的な変数のようなもの
- 永続的に使用する変数を設定する
- sourceコマンド詳細はこちら
echo 'export SAMPLE="sample"' >> ~/.zshrc #シェルの設定ファイルに環境変数$SAMPLEをexportする設定を追加している。.zshrcはそれぞれ環境で異なる
sorurce ~/.zshrc #.zshrcを再読み込みする
シェル変数
- 現在実行中のシェルでのみ使用できる変数
- 普通に変数に代入するように使用する
SAMPLE=sample
まとめ
- あいまいな理解な割には本質は理解していたみたい
- 環境変数とシェル変数のこととかは知らなかった
- パスの通し方の注意事項とか永続的に環境変数を追加する方法とかが分かったのでよかった