如何存储设置

如何存储设置

我已经让我的 .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

这个设置应该有多持久?

如果您希望它在 bash 重新启动和重启后仍然能够保留,那么您必须将其提交到磁盘,因此您的基于文件的解决方案还不错。

如果您可以接受某些默认设置(例如,始终以长提示开始,但能够切换到短提示),那么您可以稍微修改一下逻辑:在 .bashrc/.bash_profile 中将某些变量(例如 $MY_PROMPT_TYPE)设置为默认值,将 COMMAND_PROMPT 变量(每次 bash 显示提示时都会对其进行评估)设置为根据 $MY_PROMPT_TYPE 变量的当前值设置 PS1,并定义两个别名来切换 MY_PROMPT_TYPE。

为了满足您的持久性要求,您可以在每次切换时将 PROMPT_TYPE 变量的新默认值提交给 .bashrc/.bash_profile,类似于您已经执行的操作,但无需重新读取 .bashrc——您的 COMMAND_PROMPT 将为您动态更改 PS1。

TL;DR:将您的“if/else/fi”移至 COMMAND_PROMPT,将您的 .bashrcpl 移至 .bashrc/.bash_profile 中的 MY_PROMPT_TYPE,重写切换别名。

相关内容