抱歉这个标题,我没有更好的方式来传达发生在我身上的事情。情况如下,我正在使用bash
,wezterm
(终端模拟器)和starship
(可自定义提示)。但由于某种原因,每次我打开新终端时,它始终是库存/默认提示,我必须按 Enter 或键入一些内容才能获取更新。我不知道这里发生了什么行为
如您所见,第一行是未应用样式的行,而第二行是其应有的外观。
我的观察如下
- 打开新终端时总是会发生这种情况
- 当我 ssh 进入这台机器时似乎没有发生这种情况
- 当我通过多路复用器在终端内打开新终端时,不会发生这种情况
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
在登录时调用它)。