「Transwiki:Bash Shell Scripting」の版間の差分

ナビゲーションに移動 検索に移動
M
===環境変数===
 
私達が今までみてきたように、プログラムが呼ばれたとき、そのプログラムはコマンドライン上で明確にリストアップされた引数のリストを受けとります。今まで、私達が説明してこなかったものに、プログラムが受けとる名前と値のペアのリストからなる環境変数があります。この環境変数はプログラミング言語毎にアクセス方法が異なります。プログラミング言語Cのプログラムは<tt>getenv("<var>variable_name</var>")</tt>を使用します。(<tt>main</tt>の第三引数として受け取ります)、プログラミング言語perlのプログラムは<tt>$ENV{'<var>variable_name</var>'}</tt>を使います。またプログラミング言語Javaの場合は<tt>System.getenv().get("<var>variable_name</var>")</tt>を使います。
We have already seen that, when a program is called, it receives a list of arguments that are explicitly listed on the command line. What we haven't mentioned is that it also receives a list of name-value pairs called "environment variables". Different programming languages offer different ways for a program to access an environment variable; C programs can use <tt>getenv("<var>variable_name</var>")</tt> (and/or accept them as a third argument to <tt>main</tt>), Perl programs can use <tt>$ENV{'<var>variable_name</var>'}</tt>, Java programs can use <tt>System.getenv().get("<var>variable_name</var>")</tt>, and so forth.
 
Bashの場合、環境変数は単純に通常のBash変数となります。例えば、次のスクリプトは、<tt>HOME</tt>環境変数の値を出力します。
In Bash, environment variables are simply made into regular Bash variables. So, for example, the following script prints out the value of the <tt>HOME</tt> environment variable:
 
<source lang="bash">#!/bin/bash
echo "$HOME"</source>
 
ただし逆は成り立ちません。通常のBash変数は自動的に環境変数になりません。次を例を確認してください。
The reverse, however, is not true: regular Bash variables are not automatically made into environment variables. So, for example, this script:
 
<source lang="bash">#!/bin/bash
bash -c 'echo $foo'</source>
 
will not print このスクリプトは<tt>bar</tt>, because the variable を出力しません。というのも<tt>foo</tt> is not passed into the 変数は<tt>bash</tt> command as an environment variable. コマンドに環境変数として渡されていないからです。(<tt>bash -c <var>script</var> <var>arguments&hellip;</var></tt> runs the one-line は、一行のBash script スクリプト<tt><var>script</var></tt>.です。)
 
To turn a regular Bash variable into an environment variable, we have to "export" it into the environment. The following script ''does'' print <tt>bar</tt>:
112

回編集

案内メニュー