web-dev-qa-db-ja.com

bashrcの変更を永続的に設定するにはどうすればよいですか?

SSHにログインするたびに、bashrcファイルを手動で取得して、パス変数を希望どおりに設定する必要があります。 bashに自動的に実行させるにはどうすればよいですか?それは自動であるべきではありませんか?

8
user34016

ログインのたびに実行される~/.profile(または~/.bash-profile)ファイルがあります。そこで環境変数を設定する必要があります(exportコマンドを使用)。そして、各売りを開くときに実行される~/.bashrcファイルがあります。エイリアスなど、すべてのサブシェルに継承されないコマンドは、ここで設定できます(ただし、練習のために、エイリアスは~/.aliasesに設定する必要があります。これは、~/.bashrcによって自動的に供給されます)。

うまくいかない場合は、間違ったファイル名を使用するか(最初から「。」がありませんか?)、シェルとしてbashを使用していません。後者の場合は、passwd -s /bin/bash(またはOSによってはchsh -s /bin/bash)を試すか、次の方法でSSHを呼び出します。

ssh username@Host bash`
5
petersohn

$ BASH_ENVについても知っておく必要があります。

起動時にbashによって読み取られるファイルは、セッションがインタラクティブであるかどうかによって異なります。時折、セッションがインタラクティブであるかどうかが明確でない問題が発生する可能性があります。したがって、〜/ .bashrcの他に、変数BASH_ENVをエクスポートして設定し、必要なPATHおよびその他の設定を含むファイルを指すようにすることもできます。 BASH_ENVは、対話型コマンドが含まれていない限り、.bashrcファイル(場合によっては.bash_rc)を指すように設定できます(安全のために、別のファイル、たとえば〜/ .bash_envを使用してください)。 bashのmanページから:


ログインシェルではない対話型シェルが開始されると、bashは〜/ .bashrcからコマンドを読み取り、実行します(そのファイルが存在する場合)。これは、-norcオプションを使用することで禁止できます。 --rcfile fileオプションは、bashに〜/ .bashrcではなくファイルからコマンドを読み取って実行するように強制します。

Bashが非対話的に開始されると、たとえばシェルスクリプトを実行するために、環境内で変数BASH_ENVを検索し、そこに表示されている場合はその値を展開し、展開された値を読み取りおよび実行するファイルの名前として使用します。 Bashは、次のコマンドが実行されたかのように動作します。

  if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi

ただし、PATH変数の値は、ファイル名の検索には使用されません。


すでにいくつかの(おそらく正しい)答えがありますが、私はこれとまったく同じ問題を抱えていました、そしてこれは私のために働いたものです:

追加 ~/.bash_profile次の行:

if [ -f ~/.bashrc ]; then
   source ~/.bashrc
fi

詳細については、 ここ および ここ を参照してください。

($ HOMEディレクトリには、すでに次のファイルがあります。.bash_aliases.bash_history.bash_logout.bash_profile.bashrc

1
hoosierEE

これは古いことは知っていますが、新しいログインシェルでは、bashは実行する単一のファイルを探します。 .bash_profile、.profile、.bashrcの順に検索します。 .bash_profileまたは.profileが見つかった場合、それ以上.bashrcを検索しません。

解決策、.profileを入力します。

[ -f $HOME/.bashrc ] && . $HOME/.bashrc
1
Rich Homolka