web-dev-qa-db-ja.com

$ Homeを使用して〜。/ bashrcのPATHに追加できません

~/.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は私のシステム名です。

どうすればこれを修正できますか?

1
sandeep gupta

シェルと環境変数は case-sensitivesteeldriverが言うように )です。 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_に設定しないでください。

  1. そのファイルは、bashシェルによってのみ供給されるため、bashから開始されていないグラフィカルプログラムを含む多くの重要なコンテキストでは使用できません。
  2. そのファイルはすべての対話型bashシェルによって供給されるため、ある対話型bashシェルを別のシェルから起動すると、子シェルのパスが再度変更されます。そのため、ディレクトリ名は複数回付加されます。パフォーマンスへの影響はごくわずかですが、変数の値を検査していると、かなり混乱する可能性があります。

シェルがソースとなっているファイルを編集してPATHのように 環境変数を設定または変更する が必要な場合 _~/.profile_ではなく_~/.bashrc_を使用できます

(あなたがしているように、新しい値にPATHの古い値を含めることは非常に一般的であるため、「特にPATH」と言います。これが_~/.bashrc_で行われると、上記の#2で説明した煩わしさ)

2
Eliah Kagan