Git Bash PS1设置-如何将当前文件夹恢复为终端标题
我最近在我的~/.bashrc文件中添加了这些行,以显示当前的分支(如果我在git工作文件夹中的话),它可以很好地实现这一点。但是,我丢失的是,当前文件夹名称以前显示在我打开的终端的选项卡中,而现在不是:它总是说“终端”。我能把它拿回来,还保留着git的东西吗?这是有问题的几行——第二行是问题所在,因为只注释第二行就可以解决问题Git Bash PS1设置-如何将当前文件夹恢复为终端标题,git,bash,Git,Bash,我最近在我的~/.bashrc文件中添加了这些行,以显示当前的分支(如果我在git工作文件夹中的话),它可以很好地实现这一点。但是,我丢失的是,当前文件夹名称以前显示在我打开的终端的选项卡中,而现在不是:它总是说“终端”。我能把它拿回来,还保留着git的东西吗?这是有问题的几行——第二行是问题所在,因为只注释第二行就可以解决问题 source /etc/bash_completion.d/git PS1='\h:\w$(__git_ps1 "\[\e[32m\][%s]\[\e[0m\]")$
source /etc/bash_completion.d/git
PS1='\h:\w$(__git_ps1 "\[\e[32m\][%s]\[\e[0m\]")$ '
我一直在看PS1选项的解释,但在那里看不到关于终端窗口标题的任何内容。有人能提供建议吗?谢谢,麦克斯
编辑
我实际上已经在操纵PS1,以便有一个具有这种格式的终端
,每个部分都有不同的颜色,但我以前从未真正看过文档,所以感谢您提供的链接。我当前的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"
它叫“重命名选项卡”,所以我现在可以用eg来称呼它
source renametab mytabname
将更改导出到当前shell中需要“source”:如果我只是执行renametab mytabname
操作,则导出将进入一个子shell,脚本完成后该子shell将被终止
再次感谢大家的帮助 这就是我在Ubuntu上默认设置的终端标题:
PS1='\[\e]0;\u@\h: \w\a\]'
用这个来预装PS1,应该没问题您可以试试:
PS1="$PS1"'\h:\w$(__git_ps1 "\[\e[32m\][%s]\[\e[0m\]")$ '
但是,在前面的
~/.bashrc
或/etc/bash.bashrc
中,了解PS1被设置为什么会有所帮助。另一种方法是使用PROMPT\u命令,让PS1只是提示符。例如:
提示符\u COMMAND='echo-ne'\033]0;${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}”;echo-ne“\007”我使用这个:
PROMPT_COMMAND='echo -ne "\033]0;${PWD/$HOME/~} - ${USER}@${HOSTNAME}\007"'
这样会产生如下窗口标题:
/home/tkirk - tkirk@hostname
为了那些真正无助的人(像我自己)。下面是我的Bash RC,它在提示符中包含git分支名称并设置窗口标题。请注意,这对uu git_ps1使用了PROMPT_命令,它在内部设置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]$>'
如果幸运的话,您的终端是Xterm兼容的,您可以使用ANSI序列设置终端标题 我不给你顺序,而是给你指出顺序。现在,您可以为提示着色。您需要的序列被描述为xterm title hack,这就是它 您还可以使用提示符中的控制序列来帮助设置
PS1
。这些可以在下面的BASH手册页中找到
下面是我的.bashrc
中的内容:
PS1="\e]0;BASH: \u@\h\aBASH \v: \u@\h:\w\n\$ "
-设置窗口标题\e]0;BASH:\u@\h\a
-发送ESC字符,后跟左括号。这是ANSI命令序列的开始\e]
0代码>-零后跟分号。以下字符串设置标题
-我的窗口标题BASH:\u@\h\
-用户名\u
-符号@@
-主机名\h
-以我的标题结尾的贝尔(Cnrl-G)\a
-设置我的提示BASH\v:\u@\h:\w\n\$
-字符串BASH后跟版本。我的默认shell是Ksh,因此当我使用BASH shell时,我希望在提示符中看到BASH这个词BASH\v:
-用户名\u
-主机名\h
-当前工作目录(基于主目录)\w
-新行-我的提示是两行。这样,长目录就不会占用命令行空间\n
-美元符号或\$
如果您有root权限\
记住,它只是一台电脑。你所能做的最糟糕的事情就是导致整个系统崩溃,删除你所有有价值的工作,失去工作,成为一个绝望的贱民,他们唯一的收入来源就是询问顾客是否想要薯条。除非你在银行工作。然后你还可以搞垮整个全球经济。这很好——我喜欢引用现有变量!使用.bashrc,我必须删除
\h:\w
以删除冗余条目:PS1=“$PS1”'$(\uu git\u PS1”\[\e[32m\][%s]\[\e[0m\])$”
我没有意识到我可以通过PS1变量彻底毁掉我的生活!;-)感谢链接到文档,并且没有说rtfm noob lol
。请查看我的OP中的编辑-谢谢!这就是我所做的,以避免丢失我当前的PS1设置:foo
应该用实际值替换。export PS1=“$PS1”“\[\e]0;foo\a\]”
我个人刚刚在我的PROMPT\u命令中运行了update\u terminal\u cwd
PS1="\e]0;BASH: \u@\h\aBASH \v: \u@\h:\w\n\$ "