~/.bashrc
に次のようにパスを追加したいだけです。
export PATH="$Home/gg/gamit/bin:$Home/gg/kf/bin:$Home/gg/com:$PATH"
しかし、私がecho $PATH
を使用していると、次のように表示されます。
/gg/gamit/bin:/gg/kf/bin:/gg/com:/home/sandypuja/bin:/home/sandypuja/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
しかし、私はそれが次のように見えるようにする必要があります
/home/sandypuja/gg/gamit/bin:/home/sandypuja/gg/kf/bin:/home/sandypuja/gg/com:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
ここで、sandypuja
は私のシステム名です。
どうすればこれを修正できますか?
シェルと環境変数は case-sensitive ( steeldriverが言うように )です。 Home
は、HOME
と同じ変数ではありません。 HOME
環境変数には、ホームディレクトリへのパスが含まれています。通常、Home
変数は存在しません。 Home
という名前について特別なことは何もありません。
変数が定義されていない場合、変数に対して パラメータ展開 を実行すると、空の文字列( vanadium alludes to )が生成され、これが表示されます。
_$Home
_を_$HOME
_で置き換えると、問題が解決します。
_export PATH="$HOME/gg/gamit/bin:$HOME/gg/kf/bin:$HOME/gg/com:$PATH"
_
次の理由により、通常は環境変数especiallyPATH
を_~/.bashrc
_に設定しないでください。
bash
シェルによってのみ供給されるため、bash
から開始されていないグラフィカルプログラムを含む多くの重要なコンテキストでは使用できません。bash
シェルによって供給されるため、ある対話型bashシェルを別のシェルから起動すると、子シェルのパスが再度変更されます。そのため、ディレクトリ名は複数回付加されます。パフォーマンスへの影響はごくわずかですが、変数の値を検査していると、かなり混乱する可能性があります。シェルがソースとなっているファイルを編集してPATH
のように 環境変数を設定または変更する が必要な場合 _~/.profile
_ではなく_~/.bashrc
_を使用できます 。
(あなたがしているように、新しい値にPATH
の古い値を含めることは非常に一般的であるため、「特にPATH
」と言います。これが_~/.bashrc
_で行われると、上記の#2で説明した煩わしさ)