🙃

Mac PATHとは??

2024/02/13に公開

コマンドには必ずコマンド名と同じ名前のファイルが存在します。
コマンドがどこにあるのかを教えてくれるコマンドも存在します。 それがwhichコマンドです。

 % which pwd 
 /bin/pwd
 % which ls
 /bin/ls

なぜbinの中にあるファイルを実行することができる?

環境変数PATH

環境変数PATHというものがコマンドを実行するために重要な役割をする。
Macには環境変数を一覧表示するprintenvというコマンドが備わっています。

 % printenv
TERM_PROGRAM=Apple_Terminal
SHELL=/bin/bash
TERM=xterm-256color
TMPDIR=/var/folders/5h/bxvtcnj978dfmqwdkr59xvj40000gn/T/
Apple_PubSub_Socket_Render=/private/tmp/com.apple.launchd.FWsThb4MSd/Render
TERM_PROGRAM_VERSION=421.1
TERM_SESSION_ID=A16EEA5A-E4A8-4F62-99B9-2CE967439E34
USER=mac
SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.SI0Id5ua6b/Listeners
PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
PWD=/Users/mac
LANG=ja_JP.UTF-8
XPC_FLAGS=0x0
XPC_SERVICE_NAME=0
SHLVL=1
HOME=/Users/mac
LOGNAME=mac
SECURITYSESSIONID=186a8
_=/usr/bin/printenv

echoコマンド

先ほどはPATHを含め、設定されている環境変数すべてが表示されましたが、echoコマンドにより個別の環境変数の設定値を確認することができます。

% echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

PATHを通す

mac$ export PATH=$PATH:/Users/mac/Documents
mac$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/mac/Documents
mac$ pwd
/Users/mac
mac$ composer.phar -V
Composer version 1.8.0 2018-12-03 10:31:16

既存のPATHにcomposer.pharが存在する場所の/Users/mac/Documentsを追加することでcomposer.pharが存在する場所(/Users/mac)とは異なる場所からもコマンドを実行できる。

しかし、exportコマンドで実行した設定は一時的なもので、別のターミナルを起動するとその設定は解除されてしまいます。

.bash_profileファイルに環境変数PATH設定

exportコマンドでは環境変数の値を永続的に保持することができません。そのため、.bash_profileファイル(使用しているシェルがzshシェルの場合は.zshrcになります。bashシェルの場合は.bash_profileです。)を使用して、環境変数PATHの値を保持させます。

/usr/local/binへの実行ファイルの保存

exportコマンドを使用して、環境変数PATHの追加を行いましたが、環境変数PATHに追加するのではなく、事前に環境変数PATHに設定されている/usr/local/binに実行ファイルを保存するという方法もあります。その場合は、.bash_profileの作成も必要ありません。

mac$ mkdir /usr/local/bin
mkdir: /usr/local/bin: Permission denied
mac$ sudo mkdir /usr/local/bin
Password:
mac$ sudo mv composer.phar /usr/local/bin/composer

https://reffect.co.jp/windows/full_understanding_mac#PATH

Discussion