lnlidawei

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

[fedora42]:PS1配置——调整系统自带的脚本

 

 

 

 

一、 基础说明

 

  1、  [fedora42]:  PS1的定义在这个文件中【 /etc/profile.d/bash-color-prompt.sh 】

 

  2、  修改目的:将“显示当前工作目录的绝对路径”改为“显示当前工作目录的相对路径

      --  修改方法:  将【\w】改为【\W】

        --  \w  显示当前工作目录的绝对路径

        --  \W  显示当前工作目录的相对路径

 

 

 

二、【 /etc/profile.d/bash-color-prompt.sh】已修改的脚本

wit@fedora:profile.d$ sudo cat /etc/profile.d/bash-color-prompt.sh

# see /usr/share/doc/bash-color-prompt/README.md

## to truncate \w dirpath set:
# PROMPT_DIRTRIM=3

# only for bash
if [ -n "${BASH_VERSION}" -a -z "${bash_prompt_color_disable}" ]; then

    # enable only in interactive shell
    case $- in
        *i*) ;;
        *) return;;
    esac

    # defines PS1 for color prompt
    prompt_setup_color_ps1() {
        local colorpre='\[\e['
        local colorsuf='m\]'
        local colorreset="${colorpre}0${colorsuf}"

        PS1='${PROMPT_START@P}'"${colorpre}"'${PROMPT_COLOR}${PROMPT_HIGHLIGHT:+;$PROMPT_HIGHLIGHT}'"${colorsuf}"'${PROMPT_USERHOST@P}'"${colorreset}"'${PROMPT_SEPARATOR@P}'"${colorpre}"'${PROMPT_DIR_COLOR-${PROMPT_COLOR}}${PROMPT_HIGHLIGHT:+;$PROMPT_HIGHLIGHT}'"${colorsuf}"'${PROMPT_DIRECTORY@P}'"${colorreset}"'${PROMPT_END@P}\$'"${colorreset} "

    }

    # sets default color or $1 can override
    prompt_color() {
        if [ -n "${1:+1}" ]; then
            PROMPT_COLOR="$1"
        else
            if [ "$USER" = "root" ]; then
                PROMPT_COLOR=35
            else
                PROMPT_COLOR=32
            fi
        fi
    }

    # sets prompt highlighting
    prompt_highlight() {
        PROMPT_HIGHLIGHT=${1:-1}
    }

    prompt_default_highlight() {
        if [ "$DESKTOP_SESSION" = "gnome" ]; then
            prompt_highlight "${1:-1}"
        else
            unset PROMPT_HIGHLIGHT
        fi
    }

    prompt_default_color() {
        prompt_color "$1"
        prompt_default_highlight
        unset PROMPT_DIR_COLOR
    }

    prompt_dir_color() {
        if [ -n "${1:+1}" ]; then
            PROMPT_DIR_COLOR="$1"
        else
            unset PROMPT_DIR_COLOR
        fi
    }

    # only activate for color terminals and if PS1 unchanged from bash or fedora defaults
    if [ '(' "$PS1" = "[\u@\h \W]\\$ " -o "$PS1" = "\\s-\\v\\\$ " ')' \
             -a '(' "${TERM: -5}" = "color" -o "${TERM}" = "linux" ')' \
             -o -n "${bash_prompt_color_force}" ]; then
        prompt_color "$PROMPT_COLOR"
        prompt_default_highlight "$PROMPT_HIGHLIGHT"
        prompt_dir_color "$PROMPT_DIR_COLOR"
        PROMPT_USERHOST="${PROMPT_USERHOST-${container:+⬢ }\u@\h}"
        PROMPT_SEPARATOR="${PROMPT_SEPARATOR-:}"
        #PROMPT_DIRECTORY="${PROMPT_DIRECTORY-\w}"
        PROMPT_DIRECTORY="${PROMPT_DIRECTORY-\W}"
        prompt_setup_color_ps1
    fi

    # sets default prompt format
    prompt_default_format() {
        PROMPT_USERHOST='\u@\h'
        PROMPT_SEPARATOR=':'
        #PROMPT_DIRECTORY='\w'
        PROMPT_DIRECTORY='\W'
        PROMPT_START=''
        PROMPT_END=''
    }

    # sets default prompt color and format
    prompt_default() {
        prompt_default_color "$1"
        prompt_default_format
    }

    # sets color to OS ANSI_COLOR
    # $1 is appended to the (foreground) color
    prompt_os_color() {
        if [ -z "$ANSI_COLOR" ]; then
            eval local $(grep ANSI_COLOR /etc/os-release)
        fi
            PROMPT_COLOR="$ANSI_COLOR${1:+;$1}"
    }

    prompt_container() {
        if [ -n "$container" ]; then
            eval local $(grep "\(^ID=\|VERSION_ID\|VARIANT_ID\)" /etc/os-release)
            PROMPT_USERHOST="⬢ $ID-$VARIANT_ID$VERSION_ID"
        else
            if [ "$HOSTNAME" = "fedora" -a "$1" = "$USER" ]; then
                unset PROMPT_USERHOST
            fi
        fi
        }

    # unsets colors
    prompt_no_color() {
        unset PROMPT_COLOR
        unset PROMPT_DIR_COLOR
    }

    # unsets highlighting
    prompt_no_highlight() {
        unset PROMPT_HIGHLIGHT
    }

    # unsets color and highlighting
    prompt_plain() {
        prompt_no_color
        prompt_no_highlight
    }

    # sets traditional Red Hat prompt style format
    prompt_traditional_format() {
        PROMPT_USERHOST='\u@\h'
        PROMPT_SEPARATOR=' '
        PROMPT_DIRECTORY='\W'
        PROMPT_START='['
        PROMPT_END=']'
    }

    # sets traditional Red Hat prompt style without color
    prompt_traditional() {
        prompt_plain
        prompt_traditional_format
    }

    # revert to traditional Red Hat prompt
    prompt_reset_traditional_ps1() {
        PS1="[\u@\h \W]\\$ "
    }

fi

 

 

 

三、【脚本】寻找定义PS1的文件

wit@fedora:profile.d$ sudo cat find_ps1_defined_by_david_bash 

#!/bin/bash




# Find PS1 defined in some files in '/etc/profile.d/*'
#
#
# PS1 defind in '/etc/profile.d/bash-color-prompt.sh'
#
#
# function: to find PS1 which files it is defined in the folder of '/etc/profile.d/'.
# PS1 isfinally defind in "/etc/profile.d/bash-color-prompt.sh"




# get file names in the '/etc/profile.d'
#get_file_names=$(ls)


# print file name in which PS1 is defined.
function find_ps1 ()
{
  for file_name in $(ls)
  do
    # get result finding PS1 in ${file_name}
    get_ps1_result=$(cat ${file_name} | grep -E "PS1")

    if [[ ${get_ps1_result} ]]
    then
      echo -e "\t[FILE_NAME_${i}]#\t${file_name}"
      echo -e "\t[PRINT_PS1$]#\t${get_ps1_result}"
      echo -e "\n\n"
    fi

  done
}



# running/executable
find_ps1

 

 

 

四、参考文档

 

  1、  无

 

posted on 2025-04-20 18:40  lnlidawei  阅读(31)  评论(0)    收藏  举报