野声

Hey, 野声!

谁有天大力气可以拎着自己飞呀
twitter
github

なぜ環境変数を設定する必要があるのか

之前学習 Java の時、一番難しいことは JDK の環境設定だと感じました。Path、JAVA_HOME、CLASSPATH はとても印象に残っています...(ただし、JDK11 では classpath の設定は不要になりました。JRE と JDK が統合されました)。
去年の夏休みには、OpenCV の環境設定を行う必要があり、設定する項目は多かったですが、環境設定の概念が深まりました。

今ではより多くのことを理解し、設定した環境も多くなりました。設定したプラットフォームも少なくありません。今は「環境設定に関する私の感想」を共有したいと思います。

まず、Windows を例に環境設定の問題について説明しますが、Linux の場合もほぼ同じです。

環境変数がなぜ必要なのか#

私はコンピュータネットワークの授業で、IP/MAC アドレスについて話している先生から次の例を聞いたことを覚えています。

** 質問:** あなたが新しいクラスに来たとき、クラスメートの小明を見つけたいとします。どうすればいいですか?
** 回答:** クラスで「小明」と叫びます。これはもちろんできますし、小明はきっと反応します。ネットワーク上でも同じです。ただし、座席表がある場合、各生徒の座席情報が書かれているので、特定の人を見つけるのは簡単です。

環境変数も同じです。この例に非常に適しています。

ユーザーが cmd でコマンドを実行すると、コマンドラインのインタプリタは実行するコマンドを探しに行きます。
では、どこで実行可能なコマンドを探すのでしょうか?2 つの場所です。

  • 現在のディレクトリの実行可能ファイル
  • 環境変数 Path に保存されているパスの実行可能ファイル(システム変数とユーザー変数を含む)

例を挙げる#

例を挙げましょう:

win + rはよく使われるショートカットキーで、特定のプログラムを素早く実行するために使用されます。たとえば、コマンドプロンプトを開く場合に使用します:

コマンドプロンプトを開く

では、コンピュータはどのようにして cmd.exe の場所を知るのでしょうか?

Everything で cmd.exe を検索

cmd.exeC:\Windows\System32\C:\Windows\SysWOW64\の 2 つの場所にあることがわかります。つまり、コンピュータはこれらの 2 つの場所のいずれかでcmd.exeを開きます。では、システム環境変数にこれらの 2 つの場所のいずれかが含まれているかどうか確認してみましょう。

システムの環境変数の Path にこのパスが含まれているか確認してください:
Cortana の入力ボックスにpathまたは「環境」と入力すると、環境変数の編集場所に直接ジャンプできます。うまくいかない場合は、コンピュータのアイコンを右クリックしてプロパティを選択するしかありません。

私の環境変数

含まれていることがわかります。私たちの考えを確認しました〜
したがって、このプロセスも理解しました:

実行ウィンドウにcmdを入力:
    -> インタプリタがこのファイルを探しに行く:
        -> 最初に現在のディレクトリを探す
        -> 次に、環境変数Pathに保存されているパスを探す
    -> 見つからなかった場合は見つからなかったと報告する

したがって、特定の実行可能ファイルを Path に設定していない場合、そのファイルの絶対パスを手動で入力する必要があります。

Path 以外のフィールド#

他のいくつかのフィールドも私たちの使用を容易にするためのものであり、使用する場合は%フィールド名%を使用して呼び出すことができます。
たとえば、システム設定でCMDER_ROOTフィールドを設定し、その値をD:\0ArtinD\cmderに設定しました。これはパスです。
CMDER_ROOT の設定

そして、このパスを開きたい場合は、フィールド名を使用できます:
Snipaste_2019-05-02_22-47-37

簡単に言えば!これはプログラミングの変数名です。定数を定義し、使用したいときに使用できます。

Windows の CMD では、%VAR%を使用して変数を使用できます。

set VAR=hello
echo %VAR%

Unix Bash(Linux、Mac など)では、$VARを使用して変数を使用できます。

export VAR=hello
echo $VAR

PowerShell では、$env:VARを使用して変数を使用できます。

$env:VAR = "hello"
Write-Output $env:VAR

ユーザー変数とシステム変数#

オペレーティングシステムにはユーザーの概念があります。

ユーザー変数は現在ログインしているユーザーにのみ適用されます。
システム変数は現在のコンピュータのすべてのユーザーに適用されます。

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。