毎回.profileを検索または再起動せずに.profileを変更して設定を適用するにはどうすればよいですか?

毎回.profileを検索または再起動せずに.profileを変更して設定を適用するにはどうすればよいですか?

MacまたはUbuntuの場合は、次のパスを追加する必要がありますPATH

https://stackoverflow.com/questions/33725639/npm-install-g-less-does-not-work-eacces-permission-denied

# add the following to ~/.profile 
export PATH=~/.npm-global/bin:$PATH

しかし、私たちは引き続き使用する必要があります。

source ~/.profile

マシンを再起動しないと、新しいBashウィンドウに表示されます。PATHその行をに入れることができますが、その設定を.bashrc次に入れる必要があります。PATH.profilehttps://superuser.com/questions/183870/difference-Between-bashrc-and-bash-profile

したがって、ここにいくつかのジレンマがあります。再起動しないと、すべてのBashシェルでそのパスを持つことはできません。しかし、私たちのコンピュータで実行されているアプリケーションが多いため、再起動できなくなる可能性があり、再起動して再試行するのに時間がかかります。

すべてのBashシェルに変更を適用しますが、コンピュータを再起動する必要はない方法はありますか?

答え1

ファイルが存在しない場合、シェルは~/.profileファイルを読み取り、ログインシェルになります。起動時に対話型の非ログインシェルを読みます。bash~/.bash_profilebash~/.bashrc

~/.bash_profilelet(または~/.profile)sourceを使用するのが一般的です。特に~/.bashrcアクティブな使用中の唯一のシェルを読み取るシステムではさらにそうです(一部のシェルではなく他のシェルでも読むようにすると、readは複数の他のシェルを活発に使用している場合に問題を引き起こす可能性があります)。bash~/.profilebash~/.bashrc

すでに実行されているセッションからこれらのファイルをインポートしたくない場合は、bash変数の値に要素を追加するだけですPATH。この要素はシェルのコマンドラインから直接実行できます。

PATH=$HOME/.npm-global/bin:$PATH

exportここで使用して起動ファイルに追加することは重複します。PATH明示的に使用しない限り、変数はすでに環境変数であるためですunset。)

変更したばかりのシェル初期化ファイルをインポートする以外に、すでに有効になっているシェルセッションで変数の値を変更する方法はありませんPATH(そうすることで、さまざまなことを行うことができるので、これを避けたいことは理解できます)。その他もの)。

(再起動する代わりに)シェルを再起動しても機能します。特に、シェルをログインシェルで起動する場合(デフォルトでは、ログインシェルでない場合は、macOSのようにターミナルエミュレータにシェルをログインシェルで起動させることができます)。

答え2

PATH追加を含めると、$HOME/.bash_profile
Bashを起動するとすべてのBashインスタンスで実行されます。

詳細は:
man bashBashプロンプトに入力し、特定の
部分(
and/INVOCATION)を見つけますENTER

答え3

シェルが表示されるたびに.bashrcをインポートしたり、必要な操作を実行できるようにPS1に入れることができると思います。

スマート確認が必要です。 .bashrcのタイムスタンプを変数に入れる行を.bashrcに追加することもできます。その後、PS1コマンドがファイルを更新したことを確認できます。

2番目の部分はよりトリッキーかもしれません。常に PATH 変数に多くを追加すると、更新ごとに無限に大きくなります。 .bashrcの先頭に固定値を設定するか、すべてのコンポーネントを追加したら、最後に重複する項目をフィルタリングします。

これについてもっと考える時間はありませんでしたが、それがうまくいくかどうかを知りたいです。 :-)

関連情報