我已经让我的 .bashrc 给我两种类型的提示;
longp:xanth@X-VboxTux:~➤➤➤
和
简写:➤
我通过向文件写入 0 或 1 来完成此操作,然后确定应显示什么提示,如果否则树位于 PS1 行中。
所以我的问题是...有没有比将 0 或 1 写入文件更好的方法来存储状态?
代码;
bashrcpl=$(<.bashrcpl)
if [ $bashrcpl = "0" ] || [ "$(whoami)" = root ]; then
if [ "$color_prompt" = yes ]; then
if [ "$(whoami)" = root ]; then
PS1='${debian_chroot:+($debian_chroot)}\[\033[0;31m\]\u\[\033[0;32m\]@\[\033[0;36m\]\h\[\033[0;32m\]:\[\033[01;34m\]\w\[\033[0;31m\]➤\[\033[1;31m\]➤\[\033[0;32m\]➤\[\033[01;34m\] '
else
PS1='${debian_chroot:+($debian_chroot)}\[\033[1;31m\]\u\[\033[0;32m\]@\[\033[0;36m\]\h\[\033[0;32m\]:\[\033[01;34m\]\w\[\033[0;31m\]➤\[\033[1;31m\]➤\[\033[0;32m\]➤\[\033[01;34m\] '
fi
else
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
else
PS1='${debian_chroot:+($debian_chroot)}\[\033[0;32m\]➤\[\033[01;34m\] '
fi
# Alias to turn short terminal prompt on or off
alias shortp='echo "1" > .bashrcpl & source ~/.bashrc &> /dev/null'
alias longp='echo "0" > .bashrcpl & source ~/.bashrc &> /dev/null'
答案1
如果您想保存状态,则PS1
无法将其保存在某个文件中。但您不需要~/.bashrc
每次想要更改提示时都获取整个提示。您只需为此进行更改即可。只需使用两个相应设置的函数并将状态(或匹配的函数调用)保存在中,而PS1
不是使用别名:PS1
~/.bashrcpl
shortp () {
PS1='${debian_chroot:+($debian_chroot)}\[\033[0;32m\]➤\[\033[01;34m\] '
echo shortp > ~/.bashrcpl
}
longp () {
if [[ ${EUID} -eq 0 ]]; then
PS1='${debian_chroot:+($debian_chroot)}\[\033[0;31m\]\u\[\033[0;32m\]@\[\033[0;36m\]\h\[\033[0;32m\]:\[\033[01;34m\]\w\[\033[0;31m\]➤\[\033[1;31m\]➤\[\033[0;32m\]➤\[\033[01;34m\] '
else
PS1='${debian_chroot:+($debian_chroot)}\[\033[1;31m\]\u\[\033[0;32m\]@\[\033[0;36m\]\h\[\033[0;32m\]:\[\033[01;34m\]\w\[\033[0;31m\]➤\[\033[1;31m\]➤\[\033[0;32m\]➤\[\033[01;34m\] '
fi
echo longp > ~/.bashrcpl
}
source ~/.bashrcpl
最后一行加载最后使用的提示(获取文件并调用相应的函数)。
仅当要使用最后设置的提示符加载新 shell 时才需要保存状态。如果您不需要此功能,只需删除带有 的两行,echo
然后将其替换source ~/.bashrcpl
为shortp
或longp
(以您喜欢的为准)。
注意:我删除了 的检查$color_prompt
。除非$color_prompt
在 中导出,否则~/.bashrc
在交互式 shell 中运行任一函数时它将不可用。如果需要,您可以随时为单色提示添加另一个函数。