76
76

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have 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

76
76
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
76
76

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?