Linuxゲリラ戦記

$ export my_old = "16歳"
Error:エラーエラー!エラー!!エラー!!!エラー!!!調子のんなバーカ!エラー!!!!

アイキャッチ

80.環境変数の話

ナックス「今回は前回やったことの解説です!」

デビー君「はーい」

ナックス「前回やったコマンドを以下に書いてみます」

$ export PATH="$PATH:~/mybin"

デビー君「なんだか、めちゃくちゃ難しそうに見える」

ナックス「落ち着くんだ、デビー君。まずはexportを無視してみよう」

デビー君「exportを無視する?」

$ PATH="$PATH:~/mybin"

ナックス「この形式、どこかで見覚えありませんか?」

デビー君「……?」

ナックス「ほらほら。あれですよ!あれあれ!」

デビー君「??」

ナックス「……へ」

デビー君「へ」

ナックス「ん」

デビー君「ん」

ナックス「た」

デビー君「た」

ナックス「い」

デビー君「い」

デビー君「変態だー!!」

ナックス「違います。いきなり訳の分からないことを叫ばないでください。それでは、もうちょっと分かりやすく書き換えてみます」

$ PATH="設定値"

デビー君「はっはーん。これは、あれだな?」

ナックス「そうです。あれです!」

デビー君「変態だな?」

ナックス「違います。これはPATHという変数に値を設定しているのです」

デビー君「え!?あ!マジだ!」

ナックス「変数ってなんだっけ?っていう人は30.シェルスクリプトでプログラミングする前の予習。echoコマンド。exprコマンド。\によるエスケープ処理。をみて思い出してね」

ナックス「つまり、78.Linuxのパスの話でも言ったように『パスが通ったディレクトリ』の情報は、PATHという名前の変数に入っており、今回私達はPATH変数の中身を書き換えて、自分が作ったディレクトリをPATH変数の中に追加したのです」

ナックス「$PATHには、PATH変数にもともと入っていた情報(/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games)が入っているので、つまり」

$ PATH="$PATH:~/mybin"

ナックス「は」

$ PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:~/mybin"

ナックス「ということですね」

デビー君「ほうほう」

ナックス「試してみて欲しいのですが、実はPATH変数に値を設定するときはexportをつけなくても、値が設定できます」

デビー君「あ、そうなの?」

ナックス「はい。exportをつけないで変数に値を設定した場合(この場合の変数をシェル変数という)は、現在実行中のシェル(CUI環境)だけで有効な変数ですが、exportをつけて変数に値を設定した場合は、その変数を環境変数といい、シェルから実行したコマンドにも引き継がれる変数です」

デビー君「ほう……。よく分からない」

ナックス「ごめん。これに関してはあんまりうまく説明できる自信がない……。とりあえず『Linuxの環境を設定する変数に値を設定するときは基本的にexportをつける』という理解で大丈夫です。また、補足に参考になるようなサイトを載せておくので、参考にしてね」

デビー君「はーい」

ナックス「ちなみに、Linuxの環境情報が入っている変数はPATH以外にも色々あります。printenvっていうコマンドで、現在有効な環境変数が全部見れるらしいからやってみてね」

$ printenv

ナックス「環境変数のそれぞれの項目をもっと知りたい場合は、printenvコマンドを実行した結果、表示される変数名でググれば、大体何を設定するための変数かが分かると思います」

ナックス「あと、前回の補足で言ったように、環境変数に値を設定しても、一旦CUI環境を終わらせると、変数の情報が元に戻ってしまいます。環境変数に一時的に値を設定するのではなく、永続的に値を設定したい場合は自分のホームディレクトリにある設定ファイル.bashrcもしくは.bash_profileの例えば一番下とかにexport PATH="$PATH:~/mybin"みたいに書くと良いですよ」

デビー君「はーい」

ナックス「補足に、一応LANG変数について書きましたので、余裕があったら読んでね」

ナックス「さて。今後の予定ですが、C言語の基本をやろうと思います」

デビー君「はい」

ナックス「が!その前に、コマンドをバックグラウンドで実行する方法の話(81.パスの通ったディレクトリ補足)!」

このエントリーをはてなブックマークに追加