MacまたはUbuntuの場合は、次のパスを追加する必要がありますPATH
。
# add the following to ~/.profile
export PATH=~/.npm-global/bin:$PATH
しかし、私たちは引き続き使用する必要があります。
source ~/.profile
マシンを再起動しないと、新しいBashウィンドウに表示されます。PATH
その行をに入れることができますが、その設定を.bashrc
次に入れる必要があります。PATH
.profile
https://superuser.com/questions/183870/difference-Between-bashrc-and-bash-profile
したがって、ここにいくつかのジレンマがあります。再起動しないと、すべてのBashシェルでそのパスを持つことはできません。しかし、私たちのコンピュータで実行されているアプリケーションが多いため、再起動できなくなる可能性があり、再起動して再試行するのに時間がかかります。
すべてのBashシェルに変更を適用しますが、コンピュータを再起動する必要はない方法はありますか?
答え1
ファイルが存在しない場合、シェルは~/.profile
ファイルを読み取り、ログインシェルになります。起動時に対話型の非ログインシェルを読みます。bash
~/.bash_profile
bash
~/.bashrc
~/.bash_profile
let(または~/.profile
)sourceを使用するのが一般的です。特に~/.bashrc
アクティブな使用中の唯一のシェルを読み取るシステムではさらにそうです(一部のシェルではなく他のシェルでも読むようにすると、readは複数の他のシェルを活発に使用している場合に問題を引き起こす可能性があります)。bash
~/.profile
bash
~/.bashrc
すでに実行されているセッションからこれらのファイルをインポートしたくない場合は、bash
変数の値に要素を追加するだけですPATH
。この要素はシェルのコマンドラインから直接実行できます。
PATH=$HOME/.npm-global/bin:$PATH
(export
ここで使用して起動ファイルに追加することは重複します。PATH
明示的に使用しない限り、変数はすでに環境変数であるためですunset
。)
変更したばかりのシェル初期化ファイルをインポートする以外に、すでに有効になっているシェルセッションで変数の値を変更する方法はありませんPATH
(そうすることで、さまざまなことを行うことができるので、これを避けたいことは理解できます)。その他もの)。
(再起動する代わりに)シェルを再起動しても機能します。特に、シェルをログインシェルで起動する場合(デフォルトでは、ログインシェルでない場合は、macOSのようにターミナルエミュレータにシェルをログインシェルで起動させることができます)。
答え2
PATH追加を含めると、$HOME/.bash_profile
Bashを起動するとすべてのBashインスタンスで実行されます。
詳細は:man bash
Bashプロンプトに入力し、特定の
部分(
and/
とINVOCATION
)を見つけますENTER。
答え3
シェルが表示されるたびに.bashrcをインポートしたり、必要な操作を実行できるようにPS1に入れることができると思います。
スマート確認が必要です。 .bashrcのタイムスタンプを変数に入れる行を.bashrcに追加することもできます。その後、PS1コマンドがファイルを更新したことを確認できます。
2番目の部分はよりトリッキーかもしれません。常に PATH 変数に多くを追加すると、更新ごとに無限に大きくなります。 .bashrcの先頭に固定値を設定するか、すべてのコンポーネントを追加したら、最後に重複する項目をフィルタリングします。
これについてもっと考える時間はありませんでしたが、それがうまくいくかどうかを知りたいです。 :-)