したがって、ターミナルがコマンドを探す場所はほとんどありません。この場所は$PATH
に保存されます 変数。これは、端末がコマンドを検索するために反復するグローバル変数と考えてください。これは通常、/binフォルダーが通常どのように参照されるかを示すバイナリです。
/bin
フォルダには、実行可能ファイルがたくさんあります。これがコマンドであることがわかります。この異なるフォルダの場所は、1つのグローバル変数($PATH
)内に保存されます。 :
現在、通常、インストール時にプログラムがPATH
の更新を処理します &端末に、bin
内のすべてのコマンドになることができることを伝えます フォルダ。
MySqlはインストール時にそれを行わないことが判明したため、手動で行う必要があります。
次のコマンドで実行します
export PATH=$PATH:/usr/local/mysql/bin
分解すると、export
自明です。それを課題と考えてください。したがって、export
変数PATH
値が古い$PATH
新しいbin
と連結 つまり、/usr/local/mysql/bin
このように実行した後、/usr/local/mysql/bin
内のすべてのコマンド 私たちが利用できます。
ここに小さな問題があります。 1つのターミナルウィンドウをプログラムの1つのインスタンスと考えてください。おそらく、$PATH
のようなものです。 クラス変数です(多分)。これは純粋な仮定であることに注意してください。したがって、閉じると、新しい割り当てが失われます。また、ターミナルを再度開くと、最後にエクスポートしたときにコマンドが揮発性のプライマリメモリに保存されていたため、コマンドに再びアクセスできなくなります。
ここで、ターミナルを使用するたびにmysqlバイナリをエクスポートする必要があります。ですから、私たちは自分たちの道に連結を持続させなければなりません。
dotfiles
と呼ばれるものを使用している端末をご存知かもしれません。
端末の初期化時に構成をロードします。これは、ターミナルの新しいインスタンスが作成されるたびにコンストラクターに渡されるもののセットであると考えるのが好きです(これも仮定ですが、実行している可能性のあるものに近いです)。そうです、今ではあなたは私たちがやろうとしていることの要点を理解しています。
.bash_profile
既知の主要なdotfile
の1つです 。
したがって、次のコマンドでは、
echo 'export PATH=$PATH:/usr/local/mysql/bin' >> ~/.bash_profile
私たちが行っているのは、echo
の結果を保存することです つまり、文字列を〜/ .bash_profile
したがって、上記のように、ターミナルまたはターミナルのインスタンスを開くたびに、dotfiles
ロードされます。したがって、.bash_profile
それぞれロードされ、export
上で追加したものが実行されるため、グローバルな$PATH
が更新され、/usr/local/mysql/bin
内のすべてのコマンドを取得します 。
追伸
最初のコマンドエクスポートを直接実行していないが、それを永続化するために2番目に実行している場合はどうなりますか?ターミナルの現在実行中のインスタンスよりも、
source ~/.bash_profile
これにより、端末にその特定のファイルをリロードするように指示されます。