私はLinuxを初めて使用し、ホームフォルダーの下の.profile
ファイルの最後に次のコマンドを配置します。
export PATH="~/.composer/vendor/bin:$PATH"
私は環境変数とその値の問題をWindowsから少し知っていますが、この場合、このコマンドが何をするのか、そしてそれが何を構成するのかを理解したいと思います:
最初のこの「エクスポート」フレーズは何ですか? Bashで使用できるようにデータをエクスポートしていますか?
最初のPATH
とは何で、2番目の$PATH
とは何ですか。なぜ2つ必要なのですか?
私はここを読んで、ウェブの他の場所でこれについて友人と話し、新人として(おそらくUbuntuの新入生の方で、ここにいる人が思うかもしれません)、このコマンドをマップする必要があると決めました-マップを作成し、したがって、それがどうなっているのか、どこにあるのかを学びます。
今のところ、この章で何かを理解していなくても、心配しないで、読み続けるとわかりやすくなりますが、この問題を理解するには、環境変数(EV)、その値、および目的を読む必要があります。私は今、私のような新人のために、そして新人のためだけに、コマンドを簡単な言葉とマッピングの方法で説明しようとします。ここでベストを尽くそうとしました...
export PATH="~/.composer/vendor/bin:$PATH"
Ubuntu 15.10に付属するEV「PATH」の元の値は次のとおりです。
/usr/bin:/usr/sbin
コマンド自体に、2つのPATHフレーズがあることに注意してください。最後は$ PATHです-$は「元の値または隣のEVの値を出力します」と表示します。その隣のEVはPATH EVです。
パス変数自体をexported(サブプロセス、CLIで実行されるIEプロセス(実際にはBashシェルではないが、内部で実行します( Drush 、これは Drupal CLIです)。
エクスポートに加えて、それも拡張しました。最初のPATH句(PATH =)は、元の値($ PATHで表される)に追加の値(〜/ .composer/vendor/bin :)を追加するために使用しました。
上記の段落で言及した新しい値の最後のコロン(:)は、新しい値を元の値と区別するために使用します。
「」は、値が存在する領域です。
〜はホームフォルダーです。
私がこのマッピングを行った後、私のような新入生にとってコマンドがより明確になることを願っています。
最初のこの「エクスポート」フレーズは何ですか?
export
はコマンドです(より正確には Bash組み込み です。つまり、PATH
に存在する実行可能ファイルではありません。Bash自体に組み込まれているコマンドです)。
Bashで使用できるようにデータをエクスポートしていますか?
export
は、割り当ての左側の環境変数を割り当ての右側の値に設定します。そのような環境変数は、それを設定するプロセスと同じ環境で生成されたすべてのサブプロセス、つまりこの場合~/.profile
をソースとするBashインスタンスと同じ環境で生成されたすべてのサブプロセスに表示されます。たとえば、他のシェルも含めて、それらにアクセスできるようにします)。
最初の
PATH
とは何で、2番目の$PATH
とは何ですか。なぜ2つ必要なのですか?
上記の最初のPATH
は、export
を使用して設定する環境変数です。
PATH
は通常~/.profile
がソースになったときに何かを含むため(デフォルトでは/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
を含む)、単にPATH
を~/.composer/vendor/bin
に設定するとPATH
が含まれます~/.composer/vendor/bin
のみ。
コマンド内の変数への参照は、コマンドの評価時にBashによって変数の値に置き換えられる(または「拡張」される) であるため、:$PATH
はPATH
に割り当てられる値は、PATH
が~/.composer/vendor/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
を含むようになります(つまり、PATH
には既に~/.composer/vendor/bin:
が含まれています)。
https://help.ubuntu.com/community/EnvironmentVariables はおそらく役立つでしょう。また、man bash
は、それがどのように機能するかを理解するのに非常に役立ちます(少なくともBashでは)
とにかくPATH=
に関しては、基本的にPATH
変数を設定し、いくつかの新しいパスを検索に追加し、$PATH
(基本的にはPATH
変数への参照)。
したがって、PATH
はこれまでのところ次のように設定されていたとします。
PATH="x:y:z"
そして、あなたは設定します
PATH="a:b:c:$PATH"
あなたのPATH
は次のようになります:
a:b:c:x:y:z
それが理にかなっていることを願っています。
さらに、新しい変数をエクスポートして、環境内で子プロセス/サブシェルも含むようにします。
PATH
で設定されているディレクトリの順序が重要になる場合があることにも注意してください。そして、PATH="$PATH:a:b:c"
のようなものはあなたに結果を与えます:
x:y:z:a:b:c
コマンドを検索する際のディレクトリ/パスの順序に影響します(複数のディレクトリにコマンドがある場合、最初に見つかったものが使用されます-予期しない結果が得られる場合があります)。
ここにコマンドがありますので、誰もが弾丸のポイントを通り抜けることができます。 export PATH="~/.composer/vendor/bin:$PATH"
export
Shellビルトイン(/bin/export
がないことを意味する)コマンドは、基本的にbash
から呼び出される他のプログラムで環境変数を利用できるようにします(Extra Readingのリンクされた質問を参照)およびサブシェル。PATH
変数に保存されます。$PATH
はデフォルトのPATH
割り当て(または、少なくともこのコマンドが.bashrc
または.profile
に表示されるまでの変数の外観)であり、展開します。~/.composer/vendor/bin
は/home/username/.composer/vendor/bin
に展開されます。ここで、.composer
は先頭のドットのために隠しフォルダーです。~/.composer/vendor/bin:$PATH
は、:
で区切られたフォルダーの長いリストに変換されました。パスにスペースを含むフォルダーを含めるために、すべてを二重引用符で囲みます。PATH
変数に格納され、それを使用できる外部コマンドが許可されます簡単な例
私の対話型シェルは、実際にはmksh
で、たまたまexport
も組み込まれています。 export
を使用してVAR
を設定することにより、同じ変数をエクスポートしたコマンド/サブプロセスの後続のチェーンに変数を渡して使用できます。
$ echo $Shell
/bin/mksh
$ VAR="HelloAskUbuntu"
$ bash -c 'echo $VAR'
$ export VAR="HelloAskUbuntu"
$ bash -c 'echo $VAR'
HelloAskUbuntu
$
余分な読み取り値
export
コマンドは、変数をサブシェルで使用可能にします。つまり、それなしでは、変数PATH
はサブシェルでは表示されません。
PATH
は2回言及されています。
=
記号の左側の変数に値が割り当てられています。=
記号の右側の値で置き換えられる変数名として。これにより、古い値が新しい値の一部になります。export PATH="~/.composer/vendor/bin:$PATH"
export
はbashの組み込みコマンドであり、環境変数となるエクスポート変数を意味します。 (help export
と入力すると、さらに学習できます
(コマンドに続く文字はスペースで分割されたパラメーターメーターです。この場合、パラメーターは1つだけです)
PATH
は変数名であり、通常、bashによって事前定義された変数で、大文字で命名されます。
=
は、この変数に値を割り当てることを意味します。
すべての文字列は、変数の値です
$PATH
はvariable expantion
という名前のbashの一種であり、bashはパラメーター文字列のPATH
の存在する値を置き換え、文字列をexport
コマンドに送信する前に
pATH変数のspcial charの:
であり、この変数を使用するすべてのアプリケーションによって理解されます。セパレーターを意味します。そのため、PATH変数に多くのディレクトリがあります。