我最近在我的~/.bashrc文件中添加了这几行代码,以便在git工作文件夹中显示当前分支,这样做效果很好。然而,我丢失的是,过去我打开的终端的标签中显示的是当前文件夹名称,但现在不是了:它总是显示“终端”。我能不能拿回那玩意儿还留着那些东西?这就是问题所在的第二行,因为注释掉第二行就解决了这个问题。
source /etc/bash_completion.d/git
PS1='\h:\w$(__git_ps1 "\[\e[32m\][%s]\[\e[0m\]")$ '我一直在查看PS1选项的解释,但在那里看不到任何关于终端窗口标题的内容。有人能给点建议吗?谢谢,麦克斯
编辑
实际上,我已经对PS1进行了操作,以便拥有一个具有以下格式的终端
<rvm version and gemset> <computer name> <current folder> <git branch>
,每个部分都有不同的颜色,但我以前从未真正看到过文档,所以谢谢你提供的链接。我当前的PS1设置是
\[\033[0;31m\]$(__my_rvm_ruby_version)\[\033[0;33m\]\h\[\033[0;37m\]:\[\033[1;33m\]\W\[\033[1;32m\]$(__git_branch)\[\033[1;32m\]$(__git_dirty) \[\033[0;37m\]$大概我可以这样做
export "<something> $PS1"要在不丢失现有设置的情况下设置我的终端选项卡名称。虽然我一直在探索这个问题,但还是没有做到。
编辑-在下面一些答案的帮助下解决了这个问题-谢谢所有人!我将它封装在一个shell脚本中
#!/usr/bin/env bash
#renames the current terminal tab via the PS1 env var
source ~/.bashrc
export PS1="$PS1""\[\e]0;$1 \a\]"它被称为"renametab“,所以我现在可以用例如
source renametab mytabname需要“源”来将更改导出到当前shell中:如果我只执行renametab mytabname,则导出只会进入一个子shell,当脚本完成时,该子shell将被终止。
再次感谢大家的帮助!
发布于 2013-10-30 23:33:54
给那些真正无助的人(像我自己)。下面是我的Bash RC,它在提示符中包含git分支名称并设置窗口标题。请注意,这里使用__git_ps1的PROMPT_COMMAND,它在内部设置PS1。当以这种方式使用__git_ps1时,它需要2个参数。第一个参数是分支名称之前的字符串,第二个参数是分支名称之后的字符串。
#
# ~/.bashrc
#
# If not running interactively, don't do anything
[[ $- != *i* ]] && return
source ~/git/contrib/completion/git-prompt.sh
alias ls='ls --color=auto'
alias cd..='cd ..'
c_reset='\[\e[0m\]'
c_prompt='\[\e[1;31m\]'
c_path='\[\e[0;33m\]'
if [ -f ~/git/contrib/completion/git-prompt.sh ]; then
. ~/git/contrib/completion/git-prompt.sh
GIT_PS1_SHOWDIRTYSTATE=true
GIT_PS1_SHOWCOLORHINTS=true
GIT_PS1_UNTRACKEDFILES=true
# Below, The section "\[\e]0;\w\a\]" sets the window title
PROMPT_COMMAND="__git_ps1 '${c_path}\w${c_reset}' '\n\u@\t${c_prompt}-->${c_reset}\[\e]0;\w\a\]' "
fi
#PS1 is set by the __git_ps1 script above, so comment out below
#PS1='\w\n[\u@\t]$>'https://stackoverflow.com/questions/2410802
复制相似问题