MiracleJobLogo
エンジニアのエンジニアによるエンジニアのためのサイト
News 07/19 おすすめ情報に 『 【資格取得者速報】 Aさん 「 Microsoft Security, Compliance, and Identity Fundamentals」 』 を追加しました。
会員登録するとキャリア診断やサイトに参加することができます。
あなたにおすすめな技術情報、資格、仕事などをお知らせします。

無料会員登録


パスワードを忘れた場合
LINEで送る
MiracleJobBanaLeft1
MiracleJobBanaLeft2


Linuxの基礎を知る(PATH)
profile-img
投稿者: Tomoyaさん
投稿日:2023/07/14 12:42
更新日:
like-img
分類
技術
テクノロジー
Unix系サーバ
キャリア
運用・保守
投稿内容
今回はPATHについて説明します。
PATHとはコマンド検索パスを追加するコマンドです。
コマンド検索パスとは、コマンドの実行ファイルを探しに行くようなパスのことです。

PATHはLinuxを扱う上で必ずと言ってもよいほど出てくる知識となっています。
覚える点は多いですが、是非覚えてみてください。

コマンドサーチパス(PATH)
コマンドサーチパス(PATH)とはコマンド検索パスを追加するコマンドです。
コマンド検索パスとは、コマンドの実行ファイルを探しに行くようなパスのことです。このパスは環境変数PATHに設定されます。コマンドが実行されると、シェルは環境変数PATHに設定されたディレクトリでコマンドの実行ファイルを探します。本来、コマンドはファイルそのものであるためフルパスで指定する必要がありますが、コマンドサーチパスを設定していればフルパスを指定しなくてもコマンドが実行できるようになります。

例:
普段lsコマンドを使用することが多いと思いますが、lsコマンドにも実行ファイルが存在します。フルパスでコマンドを入力しても、lsだけ入力しても実行結果は同じになります。

/bin/ls
file1

ls
file1

PATHの一覧を確認する方法
環境変数PATHの中身を表示するには以下のコマンドを実行します。PATHにコマンドのパスが登録されていることを「パスが通っている」といい、新たにパスを追加することを「パスを通す」といいます。

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

whichコマンド
whichコマンドとは指定したコマンドのフルパスを表示してくれるコマンドです。
例:
which ls
/bin/ls

また、コマンドがビルトインコマンドなのか、外部コマンドなのかも判定します。ビルトインコマンドとは、シェルに組み込まれているコマンドであるため、パスはありません。それ以外のコマンドは外部コマンドといい、/binや/usr/binなどといったバイナリを格納するディレクトリに置かれています。
例:
which echo
echo: shell built-in command

「built-in」と表示されたので、echoコマンドはビルトインコマンドだとわかります。

whichはファイルやパッケージの保存場所を調べるときやtypeやwhereisコマンドに比べてかなり頻繁に使用します。
typeとwhereisコマンドは調べてみてください!

パスの通し方
コマンドが実行されるとPATHに登録されているディレクトリを順に検索し、コマンドが見つかれば実行します。パスが通っていないコマンドを実行するとエラーになります。

<パスの通し方>
# 環境変数PATHを表示
echo $PATH
/sbin:/usr/sbin:/usr/local/bin:/usr/bin:/bin

# export コマンドで新しくPATHを追加
export PATH=$PATH:/home/sample

# 環境変数PATHに/home/sampleが追加されている
echo $PATH
/sbin:/usr/sbin:/usr/local/bin:/usr/bin:/bin:/home/sample

備考
以上がパスの説明になりますが、最後に一点、パスを通すうえで気を付けなければならない点があります。それはカレントディレクトリにパスを通さないということです。これはセキュリティ的に問題があります。
もし、カレントディレクトリのファイルを実行したい場合にはファイル名の先頭に「./」を付けて実行することになっています。
コメント


MiracleJobBanaRight1
MiracleJobBanaRight2
MiracleJobBanaRight3