Linux

Linux ~環境変数について~

環境変数とは?

変数とは、数学などに出てきた「x = 値」の変数xの様なもので、
環境変数とは、ローカル環境(自分のPC内)の変数の事を言います。

環境変数はその名の通り変数なので、自ら定義することができます。

定義の仕方は?

exportコマンド

定義するときはexportコマンドを使い、環境変数の定義が出来ます。

下記にLinuxコマンド記します。(この時"="の前後にはスペースは空けないようにします。)

$ export TEST="This is a test variable"

上記のコードで変数TESTThis is a test variableという値が入ります。

$ export 定義する環境変数の名前=環境変数の中身

定義した環境変数を確認は?

printenv コマンド

先程、exportコマンドで定義した環境変数を確認する時にはprintenvコマンドを使います。
下記の様に入力します。

$ printenv

出力=>
...
PATH=/usr/local/opt/mysql@5.7/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
...
TEST=This is a test variable
...
PWD=/Users/tarou/Desktop/twitter_app/twitter-app
...

※出力の[PATH=/...]には後で触れます。

一部ではありますが、上記のような環境変数名=値のような出力が得られます。

先程、定義した変数TESTも確認できました。
ただ必要ではないものは消しておきたいので、定義した変数TESTを削除していていきます。

環境変数の削除方法は?

unsetコマンド

環境変数TESTを削除するためには、下記のようなコマンドを入力します。

$ unset TEST

削除できているかどうかはprintenvコマンドで確認が出来ます。

$ printenv TEST

上記のコマンドを入力し確認したところ変数TESTは削除されておりました。

echoコマンド

変数の参照はechoコマンドでも可能です。この場合、「echo $変数名」のように、変数名の冒頭に「$」が必要です。

 printenvは外部コマンド(/usr/bin/printenv)であり、シェル変数にはアクセスできません。これに対し、echoコマンドはシェルのビルトインコマンドなのでシェル変数・環境変数ともにアクセスできます

後で触れると言っていた。 PATHとは?

PATHとは何なのか?

簡単にいうと、「道しるべ」のことです。

まず、このPATHの中身を見ていきます。

$ printenv PATH

出力=>
/usr/local/opt/mysql@5.7/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

ここの:は「and(〜と)」と同じような意味で使われています。

これは一体何なのか?

先程のコマンドで例を述べると
printenvコマンドは、/usr/bin/printenv ファイルを参照しています。

なので、先程は

$ printenv

だけでしたが、これは下記のコマンドと同じ出力が出ます。

$ /usr/bin/printenv

PATHの中にも/usr/bin/があるのが分かると思います。

このようにいちいち/usr/bin/等のコマンドを入力するのが面倒だ!!というところで
登場したのが、道しるべの役割のPATHなのです。

PATHへ追加する方法は?

PATHへ追加する時は、下記のようなコマンドを入力します。

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

=>出力
/usr/local/opt/mysql@5.7/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/local/bin

これで、/opt/local/bin以下のコマンドを実行する事ができます。
また始まりは:からする事に注意しておきましょう。

最後に

3ヶ月ほどの独学をして勉強しておりますが、基礎のところで抜けが本当にありました。
そこで、本日学んだことを記事にしました。
誤った表現やご助言等のありましたら、よろしくお願い致します。
また、Linuxのオススメの技術参考書等教えて頂けますと幸いです。