Como armazenar corretamente as configurações

0

Eu fiz o meu .bashrc me dar dois tipos de prompts;

longp: xanth@X-VboxTux:~➤➤➤ e

shortp:

Eu fiz isso escrevendo um 0 ou um 1 em um arquivo e, em seguida, para determinar qual prompt deve ser mostrado se uma árvore else estiver na linha PS1.

então minha pergunta é ... Existe uma maneira melhor de armazenar um estado do que escrever um 0 ou um 1 em um arquivo?

código;

bashrcpl=$(<.bashrcpl)
if [ $bashrcpl = "0" ] || [ "$(whoami)" = root ]; then
    if [ "$color_prompt" = yes ]; then
        if [ "$(whoami)" = root ]; then
            PS1='${debian_chroot:+($debian_chroot)}\[3[0;31m\]\u\[3[0;32m\]@\[3[0;36m\]\h\[3[0;32m\]:\[3[01;34m\]\w\[3[0;31m\]➤\[3[1;31m\]➤\[3[0;32m\]➤\[3[01;34m\] '
        else
            PS1='${debian_chroot:+($debian_chroot)}\[3[1;31m\]\u\[3[0;32m\]@\[3[0;36m\]\h\[3[0;32m\]:\[3[01;34m\]\w\[3[0;31m\]➤\[3[1;31m\]➤\[3[0;32m\]➤\[3[01;34m\] '
        fi

    else
        PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
    fi
else
    PS1='${debian_chroot:+($debian_chroot)}\[3[0;32m\]➤\[3[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'
    
por user3076944 19.02.2014 / 03:17

1 resposta

1

Se você quiser salvar o estado de PS1 , não há como salvá-lo em algum arquivo. Mas você não precisa obter todo o ~/.bashrc toda vez que quiser alterar seu prompt. Você só precisa alterar PS1 para isso. Em vez de aliases, basta usar duas funções que configuram PS1 de acordo e salvar o estado (ou melhor, a chamada de função correspondente) em ~/.bashrcpl :

shortp () {
    PS1='${debian_chroot:+($debian_chroot)}\[3[0;32m\]➤\[3[01;34m\] '
    echo shortp > ~/.bashrcpl
}

longp () {
    if [[ ${EUID} -eq 0 ]]; then
        PS1='${debian_chroot:+($debian_chroot)}\[3[0;31m\]\u\[3[0;32m\]@\[3[0;36m\]\h\[3[0;32m\]:\[3[01;34m\]\w\[3[0;31m\]➤\[3[1;31m\]➤\[3[0;32m\]➤\[3[01;34m\] '
    else
        PS1='${debian_chroot:+($debian_chroot)}\[3[1;31m\]\u\[3[0;32m\]@\[3[0;36m\]\h\[3[0;32m\]:\[3[01;34m\]\w\[3[0;31m\]➤\[3[1;31m\]➤\[3[0;32m\]➤\[3[01;34m\] '
    fi
    echo longp > ~/.bashrcpl
}

source ~/.bashrcpl

A última linha carrega o último prompt usado (o arquivo é originado e a função apropriada é chamada).

Salvar o estado é necessário apenas para carregar um novo shell com o último prompt definido. Se você não precisar deste recurso, apenas remova as duas linhas com echo e substitua source ~/.bashrcpl por shortp ou longp , o que você preferir.

Observação: eu removi a verificação de $color_prompt . A menos que $color_prompt seja exportado em ~/.bashrc , ele não estará disponível ao executar uma das funções no shell interativo. Você sempre pode adicionar outra função para um prompt monocromático, se precisar.

    
por Adaephon 19.02.2014 / 21:52