Bash 定制仅在第一次与终端交互后进行

Bash 定制仅在第一次与终端交互后进行

抱歉这个标题,我没有更好的方式来传达发生在我身上的事情。情况如下,我正在使用bashwezterm(终端模拟器)和starship(可自定义提示)。但由于某种原因,每次我打开新终端时,它始终是库存/默认提示,我必须按 Enter 或键入一些内容才能获取更新。我不知道这里发生了什么行为

显示问题的终端图像

如您所见,第一行是未应用样式的行,而第二行是其应有的外观。

我的观察如下

  1. 打开新终端时总是会发生这种情况
  2. 当我 ssh 进入这台机器时似乎没有发生这种情况
  3. 当我通过多路复用器在终端内打开新终端时,不会发生这种情况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。除了这会导致令人难以置信的低效率之外,这还意味着在执行命令之前无法设置提示。此处可以接受空命令(即自行按回车键),但重点是您需要执行某些操作。

事情就是这样。

就我个人而言,如果我想要的只是一个花哨的提示,那么我会直接将其设置~/.bashrc(并~/.bash_profile在登录时调用它)。

相关内容