首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >/etc/bashrc在.bashrc中重写我的设置

/etc/bashrc在.bashrc中重写我的设置
EN

Unix & Linux用户
提问于 2018-07-31 08:47:32
回答 1查看 2K关注 0票数 1

在.bashrc中,我的提示符有以下代码:

代码语言:javascript
复制
PS1_TIME='\033[01;31m\]\t \033[01;32m\]'
PS1_USERNAME='\[\e[1;36m\]\u\e[1;37m\]@\e[1;32m\]\h\[\033[00m\]'
PS1_LOCATION='\[\033[01;34m\]\w\[\033[00m\]'

PS1=$PS1_TIME$PS1_USERNAME':'$PS1_LOCATION'\n\$ '
PS2='\[\033[01;36m\]>'

我在/etc/bashrc中还有以下配置

代码语言:javascript
复制
# are we an interactive shell?
if [ "$PS1" ]; then
  if [ -z "$PROMPT_COMMAND" ]; then
    case $TERM in
    xterm*|vte*)
      if [ -e /etc/sysconfig/bash-prompt-xterm ]; then
          PROMPT_COMMAND=/etc/sysconfig/bash-prompt-xterm
      elif [ "${VTE_VERSION:-0}" -ge 3405 ]; then
          PROMPT_COMMAND="__vte_prompt_command"
      else
          PROMPT_COMMAND='printf "1\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"'
      fi
      ;;
    screen*)
      if [ -e /etc/sysconfig/bash-prompt-screen ]; then
          PROMPT_COMMAND=/etc/sysconfig/bash-prompt-screen
      else
          PROMPT_COMMAND='printf "2\033k%s@%s:%s\033\\" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"'
      fi
      ;;
    *)
      [ -e /etc/sysconfig/bash-prompt-default ] && PROMPT_COMMAND=/etc/sysconfig/bash-prompt-default
      ;;
    esac
  fi

结果是,我的shell提示符配置为两个:来自/etc的提示符与我的主设置合并

代码语言:javascript
复制
[PS1 from ect][PS1 from home dir]:

如何更改本地设置,以便我的主目录将覆盖默认设置?

我不想更改文件等等,还是必须修改?

EN

回答 1

Unix & Linux用户

发布于 2018-07-31 10:42:59

PS1PROMPT_COMMAND是两个不同的变量,目的不同。还有,如Bash手册所述

如果设置为PROMPT_COMMAND,则将该值解释为在打印每个主提示符($PS1)之前执行的命令。

请注意,PROMPT_COMMAND并不打算用作提示符,而是作为打印实际提示符之前要执行的命令。

要解决这个问题,如果您不想编辑您的/etc/bashrc,您需要在本地.bashrc中为PROMPT_COMMAND取消设置或分配一个空值:

代码语言:javascript
复制
unset PROMPT_COMMAND
# or
PROMPT_COMMAND=

交互式会话中的示例(foobar$是我最初的提示符):

代码语言:javascript
复制
foobar$ printf 'PROMPT_COMMAND: [%s]\nPS1: [%s]\n' "$PROMPT_COMMAND" "$PS1"
PROMPT_COMMAND: [printf foo]
PS1: [bar$ ]
foobar$ 

取消PROMPT_COMMAND

代码语言:javascript
复制
foobar$ unset PROMPT_COMMAND
bar$ 

将空值赋值给PROMPT_COMMAND

代码语言:javascript
复制
foobar$ PROMPT_COMMAND=
bar$ 
票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/459549

复制
相关文章

相似问题

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