当前位置: 代码迷 >> 综合 >> How to modify the value of PS1 variable in command line prompt in Centos?
  详细解决方案

How to modify the value of PS1 variable in command line prompt in Centos?

热度:31   发布时间:2023-12-14 23:57:16.0

??最近一段时间在使用CentOS 7.x的时候,有很多地方感觉没有Ubuntu好用,尤其是命令提示符PS1,这里就特意介绍一下如何修改。

编辑配置文件/etc/bashrc

[root@lanzhou ~]# cat /etc/bashrc
# /etc/bashrc# System wide functions and aliases
# Environment stuff goes in /etc/profile# It's NOT a good idea to change this file unless you know what you
# are doing. It's much better to create a custom.sh shell script in
# /etc/profile.d/ to make custom changes to your environment, as this
# will prevent the need for merging in future updates.# are we an interactive shell?
if [ "$PS1" ]; thenif [ -z "$PROMPT_COMMAND" ]; thencase $TERM inxterm*|vte*)if [ -e /etc/sysconfig/bash-prompt-xterm ]; thenPROMPT_COMMAND=/etc/sysconfig/bash-prompt-xtermelif [ "${VTE_VERSION:-0}" -ge 3405 ]; thenPROMPT_COMMAND="__vte_prompt_command"elsePROMPT_COMMAND='printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"'fi;;screen*)if [ -e /etc/sysconfig/bash-prompt-screen ]; thenPROMPT_COMMAND=/etc/sysconfig/bash-prompt-screenelsePROMPT_COMMAND='printf "\033k%s@%s:%s\033\\" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"'fi;;*)[ -e /etc/sysconfig/bash-prompt-default ] && PROMPT_COMMAND=/etc/sysconfig/bash-prompt-default;;esacfi# Turn on parallel historyshopt -s histappendhistory -a# Turn on checkwinsizeshopt -s checkwinsize[ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \W]\\$ "# You might want to have e.g. tty in prompt (e.g. more virtual machines)# and console windows# If you want to do so, just add e.g.# if [ "$PS1" ]; then# PS1="[\u@\h:\l \W]\\$ "# fi# to your custom modification shell script in /etc/profile.d/ directory
fiif ! shopt -q login_shell ; then # We're not a login shell# Need to redefine pathmunge, it get's undefined at the end of /etc/profilepathmunge () {
    case ":${
     PATH}:" in*:"$1":*);;*)if [ "$2" = "after" ] ; thenPATH=$PATH:$1elsePATH=$1:$PATHfiesac}# By default, we want umask to get set. This sets it for non-login shell.# Current threshold for system reserved uid/gids is 200# You could check uidgid reservation validity in# /usr/share/doc/setup-*/uidgid fileif [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; thenumask 002elseumask 022fiSHELL=/bin/bash# Only display echos from profile.d scripts if we are no login shell# and interactive - otherwise just process them to set envvarsfor i in /etc/profile.d/*.sh; doif [ -r "$i" ]; thenif [ "$PS1" ]; then. "$i"else. "$i" >/dev/nullfifidoneunset iunset -f pathmunge
fi
# vim:ts=4:sw=4
[root@lanzhou ~]# 

将第42号修改为

[ "$PS1" = "\\s-\\v\\\$ " ] && PS1='\e[32;40m\]\u@\h:\e[36;40m\w \e[33;40m\$ \e[37;40m'

参考文献

  • centos6.5 修改命令提示符样式
  • BASH Shell Change The Color of Shell Prompt on Linux or UNIX
  • How to Change / Set up bash custom prompt (PS1) in Linux
  • Bash Prompt HOWTO
  • How to Customize Bash Colors and Content in Linux Terminal Prompt
  • How to Change Bash Shell Prompt Colorful and Attractive in Linux
  • How to customize your Ubuntu terminal prompt
  相关解决方案