【Mac】 パスを通す
シェルスクリプトを実行する際、~/Desktop/script.sh
などと位置を指定するのは意外にダルい。
良く使うシェルスクリプトは、パスの通った場所に置いておくと便利である。
パスを通った場所、というのはターミナルがコマンドを検索するフォルダのことだ。
具体的にいうと、/usr/local/bin
とか、/usr/bin
というフォルダだ。ターミナルはコマンドを命ぜらたとき、これらのフォルダ内からコマンドを捜し出す。
試しにファインダーで、command + shift + G で移動ダイヤログを出し、「/usr/bin」へ移動してみると、「cd」とか「sed」とかおなじみのコマンドを確認できる。
パスは「echo $PATH
」で確認できる。実行すると、下記のようにパスが表示される。
これらはターミナル様が専用に使う御用達フォルダなのだ。
$ echo $PATH⏎
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
PATH は環境変数という特殊な変数で、ターミナル御用達フォルダのアドレスが格納されている。各アドレスは「 : 」で区切られる。
export コマンドを用いればここに、ターミナル様をお迎えする自分専用のフォルダを追加できるのだ。
export でパスを設定してみる
新しいパスを export するには、下記のようにする。
export PATH=追加するアドレス:$PATH
デスクトップに「script」というフォルダがあったとして、そこを自分専用のパスとし、ターミナルに検索させたい、としよう。
$ export PATH=~/Desktop/script:$PATH⏎
$ echo $PATH⏎
/Users/ユーザ名/Desktop/script:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
追加したいパスとともに、既存のパスが格納された PATH をコロンで区切って指定し export する。
これで「script」フォルダがパスに追加された。echo $PATH を実行すれば、確認できるはずだ。
このフォルダに入れたシェルスクリプト、たとえば「script.sh」は、
script.sh
だけで実行できる。
ただし、export で設定したパスは、ターミナルを終了させると元に戻ってしまう。あくまで一時的な設定なのだ。
.bash_profile を作成する。
.bash_profile は、ターミナルが起動する時かならず読みこまれる、ユーザーのための設定書類だ。
ここに先ほどの
$ export PATH=~/Desktop/script:$PATH
を書きこんでおけば、起動のたびに export が実行されるという仕組みである。
macOS ではドットで始まる書類は隠しファイルになって表示されない。
しかし、command + shift + . というショートカットを押せば隠しファイル、隠しフォルダを表示できる。
.bash_profile はターミナルがホームとしているフォルダに作成する。通常は、家のアイコンで示されるユーザのホームである。
ドットで始まる書類を作るのに便利なのが「touch」コマンドだ。
$ touch ~/.bash_profile
ホームフォルダに .bash_profile があらわれる。
これをCotEditor などで開き、先ほどの export を書きこむ。
$ export PATH=~/Desktop/script:$PATH
そして保存。文字コードは UTF-8、改行コードは LF でいいと思う。
command + shift + .で隠しファイルを元に戻し、ターミナルを再起動する。
PATH を echo すると、script フォルダが追加されているのが確認できる。
$ echo $PATH⏎
/Users/ユーザ名/Desktop/script:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
追加したパスが不必要になった場合は、この .bash_profile を編集したり、.bash_profile 自体をゴミ箱に入れてしまえばいい、というわけだ。