我把Windows版本Git更新为3.0.2,现在我遇到了一个非常烦人的问题,很难解释。在终端中,在执行每个命令之后,它总是会自动添加一个新的空行,例如:
User@path $ CMD-1
<<-- new line
User@path $ CMD-2
<<-- new line
User@path $ CMD-3
<<-- new line
User@path $它显示的就像这幅画:

我的问题是如何删除这种类型的命令尾新行?
而且,在每个命令执行之后,哪个源文件正在添加这些尾-新行?因为我几乎检查了所有与PS1和输入相关的文件,但是我仍然不知道为什么会发生这种愚蠢的特性。非常感谢你的帮助。
发布于 2019-11-04 09:38:29
这是由PS1 shell变量的配置方式造成的。
如果在Git中运行以下命令,它将打印$PS1变量的当前值:
echo "$PS1"例如,我的计算机上$PS1的默认值设置为:
[\033]0;$TITLEPREFIX:$PWD\007]\n[\033[32m]\u@\h [\033[35]$MSYSTEM [\033[33m]\w[\033[36m]
\_\_git\_ps1[\033[0m]\n$ ^
注意:Your将与上面显示的不同,因为我使用的是Git的早期版本。但是,重要的是要注意的是两个换行符\n (我添加了插入符号^^来明确表示它们)。$PS1的值可能只有一个换行符\n。
从本质上讲,这些/这个换行符(\n)在运行命令后生成空白换行符。
解决方案:
要删除“命令尾新行”,请考虑运行以下复合命令:
echo $'\n'"export PS1='${PS1//\\n/}'" >> ~/.bash_profileExplanation:
1. The end of your existing [`.bash_profile`](https://www.gnu.org/savannah-checkouts/gnu/bash/manual/bash.html#Bash-Startup-Files) startup file (if the file _does_ already exists in your [`HOME`](https://www.gnu.org/savannah-checkouts/gnu/bash/manual/bash.html#index-HOME) directory).
2. Or at the beginning of a newly created `.bash_profile` file in your home directory (if the file _does not_ already exist). 例如,您的.bash_profile文件现在将包含一行内容如下:
export PS1='<newvalue>'
.bash_profile中的行利用export为$PS1 shell变量定义一个新值。实际上,<newvalue>部件将是当前PS1值减去任何换行符\n字符的值。${PS1//\\n/}的部分使用参数展开从当前$PS1值中删除所有换行符。运行上述复合命令后,“命令尾新行”问题应在下次创建新会话时解决(即创建新窗口或重新启动Git Bash)。
编辑:更改PS1文件中的git-prompt.sh值:
如果不希望使用上述解决方案覆盖默认的PS1值,则可以更改Git在安装期间创建的git-prompt.sh文件中的值。
为此,请执行以下操作:
git-prompt.sh的文件。该文件通常位于:
C:/Program Files/Git/etc/profile.d/git-prompt.sh\n并删除它们。
例如,我的git-prompt.sh文件包含几行内容如下:
PS1=“$PS1”‘n’
我简单地删除了'\n'部分,使它们读到:
PS1="$PS1“git-prompt.sh文件所做的更改,然后创建一个新会话(即创建一个新窗口,或重新启动Git )。https://stackoverflow.com/questions/58637705
复制相似问题