Bashのカスタマイズは、端末との最初の対話の後にのみ発生します。

Bashのカスタマイズは、端末との最初の対話の後にのみ発生します。

タイトルが残念です。私に何が起こったのかをよりよく伝える方法はありません。状況は次のとおりです。bashwezterm(ターミナルエミュレータ)とstarship(カスタマイズ可能なプロンプト)。ただし、何らかの理由で新しい端末を開くたびに常に在庫/基本プロンプトが表示され、更新を受け取るにはEnterキーを押すか何かを入力する必要があります。ここで何が起こっているのかわかりません。

問題を示す端末画像

ご覧のとおり、最初の行はスタイルが適用されていない行で、2番目の行はスタイルをどのように表示するかを示します。

私の観察は次のとおりです

  1. 新しい端末を開くと、常にこれが発生します。
  2. このコンピュータにSSHで接続すると、これは起こらないようです。
  3. Muxを介して端末内で新しい端末を開くと、これは発生しません。zellij

奇妙なことは、何も入力した後に正しく機能することです。だからデバッグする方法がわかりません。何か奇妙なことが起こっているかもしれませんが、どのように機能するのかわかりません。

私のbashの設定は次のとおりです。ここで発見しかし、ここでは最も重要な文書について簡単に説明します。

私のものbash_profile、ただのソース私のもの.bash_rc

source ~/.bashrc

私のもの.bashrc

# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples
# If not running interactively, don't do anything

if [ -e ~/.bash_aliases ]; then
    source ~/.bash_aliases >/dev/null 2>&1
fi

case $- in
*i*) ;;
*) return ;;
esac

.. truncated, other stuff is the default that comes in bashrc basically

ついに.bash_aliases

unalias -a
set -o vi
...

# Have to install bash-preexec as well
[[ -e ~/.bash-preexec.sh ]] && source ~/.bash-preexec.sh

# here are the evals and they are 100% evaluated
source ~/.config/wezterm/wezterm.sh
eval "$(starship init bash)"

[[ -e ~/.config/personal/bash/alias_personal ]] && \. ~/.config/personal/bash/alias_personal

図書館自体の問題かもしれませんが、その可能性は非常に高いです。この動作は設定を操作した後に発生し始め、現在数ヶ月が経過しました。

答え1

Starship は実行されるたびにその設定を適用します。どのコマンド(参照starship init bash - 完全なコード印刷たとえば、設定$PROMPT_COMMAND)、しかし私が知っている限り、または.bashrcではありません.bash_profile。これは非常に非効率的であるだけでなく、コマンドを実行する前にプロンプ​​トを設定できないことを意味します。ここでは空のコマンド(Enterキーを押すなど)が許可されていますが、ポイントは何かをする必要があることです。

つまり、この方法。

個人的に私が望むものが素晴らしいプロンプトだけなら、ただ設定して~/.bashrcログイン~/.bash_profile時に呼び出すことになります。

関連情報