在Ubuntu(Linux)的提示符上显示代码名称(小插曲)

修改命令提示符环境变量的\h,根据 lsb_release 的输出

提取 lsb_release -a 命令的代号的代码段。

lsb_release -a
#>No LSB modules are available.
#>Distributor ID: Ubuntu
#>Description:    Ubuntu 22.04.3 LTS
#>Release:        22.04
#>Codename:       jammy

lsb_release -a 2>/dev/null|grep 'Codename:' |perl -pe 's/^.+\s+([^\s]+)\s*$/$1/g'
#> jammy...

将其设置为变量的代码片段

DIST_CODENAME=`lsb_release -a 2>/dev/null|grep 'Codename:' |perl -pe 's/^.+\s+([^\s]+)\s*$/\$1/g'`

echo "$DIST_CODENAME"
#> jammy

只需将提示环境变量的主机名指定部分\h替换为变量$DIST_CODENAME并查看的代码片段。

echo "$PS1"
#> \[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$

echo "$PS1"|perl -pe 's/\\h/'$DIST_CODENAME'/g'
#> \[\e]0;\u@jammy: \w\a\]${debian_chroot:+($debian_chroot)}\u@jammy:\w\$

把PS1替换为命令提示符并应用的代码片段

# 変更前のPS1をOLDPS1に退避
export OLDPS1="$PS1"
#engbjapan@localhost:~$  
export PS1=`echo "$OLDPS1"|perl -pe 's/\\\\h/'\$DIST_CODENAME'/g'`
#engbjapan@jammy:~$

把这些内容转化为脚本。

# ~/.chghost2codename に作成します
cat <<SEOF > ~/.chghost2codename
export OLDPS1="\$PS1"
DIST_CODENAME=\`lsb_release -a 2>/dev/null|grep Codename: |perl -pe 's/^.+\s+([^\s]+)\s*\$/\$1/g'\`
export PS1=\`echo "\$OLDPS1"|perl -pe 's/\\\\\\\h/'\$DIST_CODENAME'/g'\`
echo 'I changed the hostname of the prompt to the distribution codename.'
echo 'If you want to restore it, please execute the following command.'
echo 'export PS1="\$OLDPS1"'
SEOF
export OLDPS1="$PS1"
DIST_CODENAME=`lsb_release -a 2>/dev/null|grep Codename: |perl -pe 's/^.+\s+([^\s]+)\s*$/$1/g'`
export PS1=`echo "$OLDPS1"|perl -pe 's/\\\\h/'$DIST_CODENAME'/g'`
echo 'I changed the hostname of the prompt to the distribution codename.'
echo 'If you want to restore it, please execute the following command.'
echo 'export PS1="$OLDPS1"'

请重新登录以进行确认。

ssh localhost 
#>engbjapan@localhost's password:
#>Welcome to Ubuntu 22.04.3 LTS (GNU/Linux 3.13.0-00298-g3c7cbb9-#dirty armv7l)
#>
#> * Documentation:  https://help.ubuntu.com
#> * Management:     https://landscape.canonical.com
#> * Support:        https://ubuntu.com/advantage
#>Last login: Sat Dec  9 06:35:07 2023 from XXX.XXX.XXX.XXX
#>engbjapan@localhost:~$
source ~/.chghost2codename
# 若しくは`. ~/.chghost2codename`

#>I changed the hostname of the prompt to the distribution codename.
#>If you want to restore it, please execute the following command.
#>export PS1="$OLDPS1"
#>engbjapan@jammy:~$

如果要添加到登录shell

# 現在のログインシェルをバックアップ `~/.bashrc` の場合
cp -a ~/.bashrc ~/.bashrc`date +"%Y_%m_%d_%H_%M_%Sbk"`

echo 'source ~/.chghost2codename' >> ~/.bashrc

tail -5 ~/.bashrc
#>    . /etc/bash_completion
#>  fi
#>fi
#>export LANG=ja_JP.UTF-8
#>source ~/.chghost2codename
#>engbjapan@jammy:~$