web-dev-qa-db-ja.com

zsh内からbashを入力するときに〜/ .bash_profileをロードする方法は?

私はbashを2年間使用しましたが、OS Xでhomebrewを使用してzshシェルに切り替えようとしました。そして、デフォルト(ログイン)シェルをzshに設定し、ターミナルを起動するとデフォルトで使用されるzshシェルであることを確認して、適切に設定されていることを確認しました。

ただし、zsh内からbashシェルを入力しようとすると、_~/.bash_profile_のような_~/.bash_profile_で定義されているエイリアスを使用してコマンドを実行できないため、_alias Julia="~/juila/Julia"_をロードしていないように見えます。など。また、プロンプトはファイルに設定したものではなく、代わりに_bash-3.2$_を返します。

何らかの理由で、ログインシェルをbashに設定し、bash内からzshと入力すると、_~/.zshrc_が適切にロードされます。

それで、zsh内からbashを実行するたびにロードされないのはなぜですか?私の_~/.bash_profile_は、他のコンピューターと同期するために_~/Dropbox/.bash_profile_にシンボリックリンクされています。たぶん問題の原因ですか?

30
Blaszard

インタラクティブなbash~/.bash_profileログインシェルの場合、または~/.bashrcログインシェルでない場合。

典型的な.bash_profileには次のようなものが含まれます。

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

そう .bashrcには、ログインシェルまたは非ログインシェルによって実行されるコマンドを含めることができます。

bash -l単にbashではなく、.bash_profile

リファレンス: https://www.gnu.org/software/bash/manual/html_node/Bash-Startup-Files.html

23
Keith Thompson

~/.zshrcを開き、ファイルの一番下に以下を追加します。

if [ -f ~/.bash_profile ]; then 
    . ~/.bash_profile;
fi

ターミナルを開くたびに、~/.bash_profile(ファイルが存在する場合)で定義されているものがすべてロードされます。これにより、zsh(色など)のカスタム設定を保持できます。そして、.bash_profileファイルにカスタムシェル設定を保持することができます。

これは、bash -l IMOを使用するよりもずっときれいです。

設定を.bashrc、または.bash_login、または.profileに配置することを好む場合は、同じことを行うことができます。

21
Yuchen Zhong

@Keith Thompsonの優れた答えを補完するには:

macOS

@ chepnerは簡潔に言う (強調鉱山):

OS Xでは、bashは最初の[ブート時]ログインプロセスの一部として使用されず、Terminal.app(または他のターミナルエミュレータ)プロセスは既存のbashセッションの外部に存在するため、各新しいウィンドウ[またはタブ-読み取り:対話型bashシェル](デフォルト)は、それ自体を新しいログインセッションとして扱います

その結果、一部のOSXユーザーは~/.bash_profileのみを作成し、すべてのインタラクティブbashシェルはloginであるため、~/.bashrcを使用することはありませんシェル。

Linux

Linuxでは、状況は通常reversed:インタラクティブに作成されたbashシェルは[interactive]NON-loginシェルです、それで重要なのは~/.bashrcです。

その結果、多くのLinuxユーザーは~/.bashrcのみを扱います。


両方のプラットフォームで機能するbashプロファイルを維持するには、@ Keith Thompsonが言及している手法を使用します。

  • 定義(エイリアス、関数など)を~/.bashrcに入れます
  • 次の行を~/.bash_profileに追加します
[[ -f ~/.bashrc ]] && . ~/.bashrc
18
mklement0

〜/ .bash_profileから内容をコピーし、〜/ .zshrcファイルの下部に貼り付けます。

12
Sandeep Kumar

MacOのZSHユーザーの場合、私は1つのライナーになりました。

〜/ .zshrcの一番下に次の行を追加しました:

bash -l

それは、単に。bash_profile settings(alias、function、export $ PATH、...)を読み込むだけです

ZSHを削除してプレーンなBASHに戻ることにした場合、通常の状態に戻るのにまったく手間はかかりません。

5
Yahel

これが頻繁に行わないものである場合、または変更を加えるのが適切でない場合は、子bashシェルの起動後に。bash_profileを「ソース」にすることもできます。

. ~/.bash_profile

これにより、シェルセッションの存続期間中に。bash_profileスクリプトで行った設定が取り込まれます。ほとんどの場合、そのコマンドを繰り返すことができるはずです。したがって、完全なログインを行う必要なく、加えた変更をテストするだけでなく、次の場合に既存のシェルセッションをすべて最新の状態にすることも簡単です。 。bash_profileおよび/または。bashrcファイルをアップグレードします。

3
theNbomr

最近、OS Xに oh-my-zsh をインストールし、zshをデフォルトのシェルとして設定し、同じ問題に直面しました。
I 解決済みsource ~/.bash_profile の終わりに .zshrcファイル。

1
haccks

Zshをインストールしたばかりで、bashのエイリアスをzshで機能させるには

  1. .zshrcファイルをvimで開きます

     vi ~/.zshrc
    
  2. 一番下までスクロール

  3. 「i」をクリックして書き込みモードを有効にします
  4. Zshに、必要に応じてbash_profileからアイテムをロードするように指示します
    source ~/.bash_profile
    
  5. 次のように書いて終了します
    :wq
    
  6. Zshを次のように更新します
    source ~/.zshrc
    
    それでおしまい。これで、.bash_profileに保存されたすべてのエイリアスがzshで使用できるようになります。
0
Mussa Charles