LoginSignup
75
75

More than 1 year has passed since last update.

初心者がパスを通す(´・ω・`)

Last updated at Posted at 2019-06-07

この記事について

■ 対象:IT初心者しょぼん君:(´・ω・`)
・初心者向け、イメージを掴むキッカケになることが目的の記事
・砕いた理解で、一部正確ではない場合があります。

■ しょぼん君のぼやき
しょぼん君:(´・ω・`)『パスを通す』

パスを通すとは

「パスを通す」とは、環境変数のPATHに実行ファイルまでのパスを追記することです。

しょぼん君:(´・ω・`)『パスにパスを追記するって言われても...』

普段シェルスクリプトなどを実行するときには、ターミナルで、「./hoge/foo/bar.sh」などパス(道のり)を指定して実行すると思います。これでもいいんですが、ちょっと面倒です。

環境変数PATHによく使う実行ファイルのパスを書くことで、どこのディレクトからでも実行ファイル名だけ(上の例だと、bar.sh だけ)で実行出来るようになります。ターミナルで実行されたコマンドは、環境変数PATHを元に検索され実行されます。そのため、環境変数のPATHのことをコマンドサーチパスなんて言ったりもします。

しょぼん君:(´・ω・`)『環境変数PATHに、よく使う道(パス)を教えておけば、実行ファイル名だけで実行してくれるようになるんだね』

環境変数PATH

「環境変数」は、プロセスの中で宣言する「シェル変数」よりも有効範囲が広い変数で、ターミナルを終了(exit)するまでパソコンが覚えている変数のことです。

しょぼん君:(´・ω・`)『環境変数なら共通の変数として色んなシェルスクリプトから使えたりするんだな』

さっそく、環境変数PATHの中身を確認してみましょう。

環境変数PATHの確認.
$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

パスはコロン(:)で区切られていて、コマンド実行時には、左のパスから優先的に検索をして実行ファイルを実行します。
例えば、環境変数PATHに登録されている/bin配下を確認してみます。

$ ls /bin/
[       chmod       date        domainname  expr        ksh     ln      mv      pwd     sh      sync        unlink
bash        cp      dd      echo        hostname    launchctl   ls      pax     rm      sleep       tcsh        wait4path
cat     csh     df      ed      kill        link        mkdir       ps      rmdir       stty        test        zsh

しょぼん君:(´・ω・`)『よく使う「ls」や「pwd」も実行ファイルで、PATHにパスが書いてるからコマンドとして使えるのか』

環境変数のPATHに追記をするには、以下のexportコマンドを使います。

環境変数PATHへの追記.
#環境変数PATHの右側にパスを追記(優先度低)
$ export PATH=$PATH:/hoge/foo

#環境変数PATHの左側にパスを追記(優先度高)
$ export PATH=/hoge/foo:$PATH

しょぼん君:(´・ω・`)『あれ、でもこれじゃあターミナルを閉じたら消えちゃうよね?』

環境変数PATHを永続的にする

上述では、ターミナル起動後に「閉じるまでは環境変数PATHはこうするよ」と教えていたのでexitすると消えてしまいました。
そこで、ターミナル起動時に「閉じるまでは環境変数PATHはこうするよ」を毎回教えるように設定すればターミナルを閉じたり再起動しても環境変数を利用することが出来ます。

しょぼん君:(´・ω・`)『毎回勉強してから起動してもらうとな』

bash

ターミナルのデフォルトではbashというシェルが起動されます。(MacOS:Catalina以降はzsh)
シェルは我々とPCの仲介役で、通訳のような役割をします。

ターミナルを起動すると通訳である bash さんが呼ばれ、設定ファイルの「bash_profile」や「bashrc」が読み込まれます。
永続的に設定するためには、起動時に読み込まれる「bash_profile」に記載するのがベターです。bash_profileはホームディレクトリ配下の隠しファイルとして存在します。なければ作りましょう。

.bash_profileがあるか確認、なければ作成、追記、反映
$ ls -al | grep .bash

$ touch ~/.bash_profile

$ export PATH=$PATH:/hoge/foo

追記しただけでは変更が反映されないので、ターミナルを再起動してログインしなおすか、sourceコマンドで設定を読み込み直します。

設定の反映
$ source ~/.bash_profile

zsh

MacOSが新しくなったタイミングで、デフォルトシェルがzshになりました。
しょぼん君:(´・ω・`)『$マークから%に変わっとる』

# デフォルトシェルを確認
% echo $SHELL
/bin/zsh

# 使えるシェル一覧も見てみる
% sudo cat /etc/shells
# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.

/bin/bash
/bin/csh
/bin/dash
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh

zshでは .zshrc に設定を記載し読み込みます。ホームディレクトリ配下になければ作りましょう。

.zshrcがあるか確認、なければ作成、追記、反映
# なければ作成
% touch .zshrc 

# 追記
export PATH="$PATH:$HOME/.composer/vendor/bin"

# 変更反映
source ~/.zshrc

しょぼん君:(´・ω・`)『パスを通したら、どこからでも実行出来るようになって楽チンだぜ...ククク』

TIPS

コマンドからパスを探したいときは、which コマンドを使います。

Which
$ which ls
/bin/ls

Appendix

■ リンク
- しょぼん君シリーズの他記事(´・ω・`)

END

75
75
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
75
75