Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
31
Help us understand the problem. What is going on with this article?
@viola

【UNIX】環境変数【bash】

More than 3 years have passed since last update.

最近、$PATH がどうなっているか覚えていないので整理しようと思い、記事にしてみました。参考になれば嬉しいです。

ターミナルやコマンドプロンプトを使うようになった初学者は、チュートリアルなどで何かをインストールしたあと、 パスを通す というような言葉を目にするでしょうね。そして、例えば以下のようなコマンドを実行されていると思います。

export PATH="/usr/local/bin:$PATH"

環境変数 (Enviroment Variable)

シェルコマンド、およびシェルスクリプトは環境変数を利用できます。これは何かを入れておく箱です。環境変数と名乗るからには、その中身はたいていコンピュータをとりまく環境に関するものです。ターミナルで以下のように実行してみて下さい。

$ printenv

大文字の英字と、隣にイコールから続くものが何行か表示されたと思います。これら大文字の英字が環境変数という箱であり箱の名前です。その後にイコールから続く文字列がその環境変数という箱に収められている中身です。例えば、 HOME という環境変数にはあなたのホームディレクトリを示す絶対パスが入っているはずです。その場所は普段何気なく Finder やエクスプローラで開いている、あなたの写真や音楽などが収められている場所ですね。そして SHELL という環境変数にはあなたが普段からターミナルやコマンドプロンプトで使用しているシェルの絶対パスが入っています。そのシェルをログインシェルといいます。あなたがこうしてシェルを使用できるのは、いつものシェルコマンドがコンピュータ上のどこにあるのかというメモが環境変数に入っているからです。

export

環境変数を設定するには、まずシェル変数という箱に入れなければなりません。シェル変数はいつまでも入れておくことができません。いま起動しているシェルを終了してしまうと失われてしまいます。そのシェル変数を環境変数にすることで、いつ何度でもシェルを起動するたびに使えます。 export というコマンドを使い、シェル変数を環境変数として設定します。 echo などを使って環境変数の中身を参照するには、それが変数であることを示す $ を先頭に置いてから環境変数の名前を書きます。

$ FOO=bar     # シェル変数 FOO に bar を入れる
$ export FOO  # シェル変数 FOO を環境変数 FOO にする
$ echo $FOO   # 環境変数の中身を参照
$ bar

上記の例ではシェル変数への代入と環境変数の設定を別々に実行しましたが、以下のように一行で書くこともできます。

$ export FOO=bar  # シェル変数 FOO に bar を入れながら環境変数 FOO に設定
$ echo $FOO
$ bar

unset

せっかく設定した環境変数ですが、入れるものを間違えてしまったり、環境変数の名前を間違えてしまったりした時は、それを取り消したいですよね。 unset というコマンドを使って環境変数を削除できます。

$ FOO=hoge     # シェル変数 FOO に hoge を入れる
$ export FOO   # シェル変数 FOO を環境変数 FOO にする
$ echo
$ hoge         # 間違えたので消したい
$ unset FOO    # 環境変数 FOO を削除

このようになります。

環境変数 PATH

先述のように、環境変数にはいつも利用するものを入れておくことができます。いくつもの環境変数がありますが、たいていは何を入れるものなのか用途が決まっていることが多いです。

PATH という環境変数には、あなたが使うコマンドがどこにあるのかを探す為に場所のメモが書かれています。 echo $PATH として出力してみると、絶対パスがいくつか入っているはずです。

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

あなたの出力結果といくらか違っているかも知れませんが、絶対パスがセミコロンで区切られながらいくつか並んでいることでしょう。左側にあるパスほど検索の優先順位が高いです。いつも何気なく使っているシェルですが、その場所が PATH に書かれているから使うことができます。何かをインストールした時、PATH を通さなければならないのは、インストールした場所をここに入れておき、コマンドを使えるようにする為です。

31
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
viola
最近はROM専です。 投稿から1年以上経っている記事を参考する際は注意してください。場合によっては古すぎます。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
31
Help us understand the problem. What is going on with this article?