如何正确存储设置

如何正确存储设置

我已经让我的 .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 ~/.bashrcplshortplongp(以您喜欢的为准)。

注意:我删除了 的检查$color_prompt。除非$color_prompt在 中导出,否则~/.bashrc在交互式 shell 中运行任一函数时它将不可用。如果需要,您可以随时为单色提示添加另一个函数。

相关内容