$CDPATH変数を含むパスを探しますか?

$CDPATH変数を含むパスを探しますか?

気になってです。などの変数をエコーする場所でファイルを見つける方法はありますか$PATH$CDPATH

2番目の質問: また、bashはこれらの変数をどのように知ることができますか?うんenv?もしそうなら、これはファイルですか?このような新しいカスタム変数を追加することは可能ですか?

ベストアンサー1

最初の質問の回答:$ PATH変数はログイン時にファイル数に基づいて作成され、表示される出力は結果をマージしたecho $PATH結果です(メモリに保存されます)。

PATH変数が設定されているファイル(複数のファイルがある可能性がある)を見つけるには、ログイン時に読み取るファイルを考慮する必要があります。以下のリストはディストリビューションによって異なりますが、良い出発点になります。

/etc/profile, /etc/profile.d/*, /etc/bashrc, /etc/environment, ~/.bashrc, ~/.bash_profile, ~/.bash_login, ~/.profile. 

2番目の質問への回答上記のように、変数はメモリに保存され、必要に応じて新しい変数を変更して追加できます。たとえば、定義されたPATHに追加します。

[root@re ~]# PATH=$PATH:/opt/some/path
[root@re ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/opt/some/path

上記は現在のセッションでのみ有効です。これを永久に作成するには、ログイン中にインポートしたファイルの1つに追加する必要があります。

JAVA_HOMEを追加し、Javaバイナリがシステムパス変数にあることを確認したいとします。次の内容で/etc/profile.d/my-java-env.shという新しいファイルを作成します。

[root@re ~]# cat /etc/profile.d/my-java-env.sh
# Here we are adding java bin folder to existing path.
PATH=$PATH:/usr/java/jdk1.8.0_20/bin
# Here we are creating new variable pointing to JAVA_HOME
JAVA_HOME=/usr/java/jdk1.8.0_20

上記を適用するには、もう一度ログインしてください。

$CDPATHデフォルトでは、私が使用しているディストリビューション(Ubuntu、CentOS)では、変数は空ですが(設定されていません)、同じロジックが適用されます。設定されている場合、これはおそらくログイン中にインポートされたファイルの1つで行われます(上記のように)。

おすすめ記事