[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、 无
本文由 lnlidawei 原创、整理、转载,本文来自于【博客园】; 整理和转载的文章版权归属【原创作者】; 转载或引用时【请保留文章的来源信息】:https://www.cnblogs.com/lnlidawei/p/18837222

浙公网安备 33010602011771号