Я заставил мой .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 ответ1

0

Насколько постоянным должен быть этот параметр?

Если вы хотите, чтобы оно сохранялось при перезапуске и перезагрузке bash, вам нужно зафиксировать его на диске, чтобы ваше файловое решение не было наполовину плохим.

Если вы можете жить с некоторыми настройками по умолчанию (например, всегда начинать с длинной подсказки, но иметь возможность переключаться на короткую), то вы можете немного изменить свою логику: установите для некоторой переменной (например, $ MY_PROMPT_TYPE) значение по умолчанию в вашей. bashrc/.bash_profile, установите переменную COMMAND_PROMPT (которая оценивается каждый раз, когда bash показывает вам приглашение) установить PS1 на основе текущего значения переменной $ MY_PROMPT_TYPE и определите два псевдонима для переключения MY_PROMPT_TYPE.

Чтобы удовлетворить ваши требования к постоянству, вы можете зафиксировать новое значение по умолчанию для переменной PROMPT_TYPE в .bashrc/.bash_profile каждый раз, когда вы переключаете его, аналогично тому, что вы уже делаете, но без необходимости перечитывать .bashrc - ваш COMMAND_PROMPT изменит PS1 динамически для вас.

TL; DR: переместите ваше «if /else /fi» в COMMAND_PROMPT, переместите ваш .bashrcpl в MY_PROMPT_TYPE в .bashrc /.bash_profile, перепишите псевдонимы переключателей.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .