首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Bash PS1设置-如何将当前文件夹恢复为终端标题

Bash PS1设置-如何将当前文件夹恢复为终端标题
EN

Stack Overflow用户
提问于 2010-03-10 00:49:34
回答 6查看 5.6K关注 0票数 7

我最近在我的~/.bashrc文件中添加了这几行代码,以便在git工作文件夹中显示当前分支,这样做效果很好。然而,我丢失的是,过去我打开的终端的标签中显示的是当前文件夹名称,但现在不是了:它总是显示“终端”。我能不能拿回那玩意儿还留着那些东西?这就是问题所在的第二行,因为注释掉第二行就解决了这个问题。

代码语言:javascript
运行
复制
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设置是

代码语言:javascript
运行
复制
\[\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\]$

大概我可以这样做

代码语言:javascript
运行
复制
export "<something> $PS1"

要在不丢失现有设置的情况下设置我的终端选项卡名称。虽然我一直在探索这个问题,但还是没有做到。

编辑-在下面一些答案的帮助下解决了这个问题-谢谢所有人!我将它封装在一个shell脚本中

代码语言:javascript
运行
复制
#!/usr/bin/env bash
#renames the current terminal tab via the PS1 env var
source ~/.bashrc
export PS1="$PS1""\[\e]0;$1 \a\]"

它被称为"renametab“,所以我现在可以用例如

代码语言:javascript
运行
复制
source renametab mytabname

需要“源”来将更改导出到当前shell中:如果我只执行renametab mytabname,则导出只会进入一个子shell,当脚本完成时,该子shell将被终止。

再次感谢大家的帮助!

EN

Stack Overflow用户

发布于 2013-10-30 23:33:54

给那些真正无助的人(像我自己)。下面是我的Bash RC,它在提示符中包含git分支名称并设置窗口标题。请注意,这里使用__git_ps1的PROMPT_COMMAND,它在内部设置PS1。当以这种方式使用__git_ps1时,它需要2个参数。第一个参数是分支名称之前的字符串,第二个参数是分支名称之后的字符串。

代码语言:javascript
运行
复制
#
# ~/.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]$>'
票数 1
EN
查看全部 6 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2410802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档