Help us understand the problem. What is going on with this article?

いまさらですがLinuxで環境変数を設定したい

More than 1 year has passed since last update.

いまさらですがlinuxで環境変数を設定するときのいろいろです。

環境変数とシェル変数

変数を設定したい、というとき、変数には2種類あります。
それが環境変数シェル変数です。
この2つは設定の方法が違います。また、変数が適応される範囲(スコープ)も異なります。
以下、NAME といういう変数に Taro という値を保持例で説明します。

シェル変数

1  $ NAME=Taro

このプロセス内でのみ変数は有効となります。
子プロセスには引き継がれません。このプロセスから新たにプロセスを立ち上げても、新たに立ち上げたプロセス内ではNAME変数は参照できません。

環境変数

1  $ NAME=Taro
2  $ export NAME
3  # OR
4  $ export NAME=Taro

子プロセスでも変数を参照することができます。このプロセスから新たに立ち上げたプロセス内でもNAME変数を参照できます。
しかし、子プロセス内でNAME変数の値を変更しても親プロセス内でのNAME変数の値は変わりません。子プロセスが立ち上がるときに変数がコピーされるイメージです。

環境変数の説明コードに書いてあるように、シェル変数を定義し、その変数をexportすることでも環境変数となります(1、2行目)。
4行目のようにまとめて書くこともできます。

設定した環境変数を表示する

echoコマンド

$ echo $NAME

echoコマンドは引数でもらった値を表示することができます。
変数の中身を表示するときには、変数の前に$が必要です。

printenvコマンド

$ printenv

環境変数にのみ対応しています。引数なしで実行することで環境変数の一覧を表示することができます。
また環境変数名を引数に渡すことで中身を見ることができます($はいりません)。

envコマンド

$ env

環境変数にのみ対応しています。引数なしで実行することで環境変数の一覧を表示することができます。

setコマンド

$ set

環境変数とシェル変数の一覧を表示することができます。

変数の削除

$ unset NAME

環境変数も、シェル変数も削除することができます。
$はいりません。

毎回設定するのは面倒

上記の設定方法だと、ターミナルを立ち上げる度に変数を設定する必要があります。
設定ファイルに書くことで、毎回手動で設定する必要がなくなります。

linuxにはいくつか設定ファイルが存在し、読み込まれる順番やタイミングが決まっています。
詳しくは以下の記事を・・・
https://qiita.com/yunzeroin/items/480a3a677f78a57ac52f
https://qiita.com/magicant/items/d3bb7ea1192e63fba850

~/.bash_profileに環境変数、~/.bashrcにシェル変数を書いておきます。
以下、環境変数の例です。

# .bash_profile

NAME="Taro"
export NAME

これで、ログインするときにこの環境変数が設定されます。

※~/.bash_profileに書いただけでは読み込まれません。一度ログアウトしてログインしなおすか、以下のコマンドを実行します。

$ source ~/.bash_profile
Why do not you register as a user and use Qiita more conveniently?
  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
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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