Terminal, Prompt alterado para “-Bash-4.2” e cores perdidas

5

Normalmente, meu prompt de terminal era

username place$

agora só mostra

bash-4.2$

e todas as configurações de cor foram perdidas (no perfil do terminal eu tenho o mesmo esquema de cores, mas ele simplesmente não mostra cores)

Eu não tenho ideia do que acontece (e não sei como pesquisar isso).

Ele muda do nada, eu estava trabalhando com o eclipse e o maven, abri um novo terminal e o novo terminal não tinha cores.

Nota: Eu não tenho um arquivo ~ / .bashrc, mas eu tenho um ~ / .bash_profile.

    
por lcjury 22.04.2014 / 15:00

2 respostas

7

A variável de prompt $PS1 provavelmente não foi configurada, portanto, o padrão interno \s-\v\$ é usado.

Quando o bash inicia interativamente, ele origina um arquivo de configuração, geralmente ~/.bashrc ou ~/.bash_profile , presumindo que existam, e é assim que um prompt de amador é definido. De man bash :

INVOCATION

[...] When bash is invoked as an interactive login shell, or as a non-interactive shell with the --login option, it first reads and executes commands from the file /etc/profile, if that file exists. After reading that file, it looks for ~/.bash_profile, ~/.bash_login, and ~/.profile, in that order [...]

[...] When an interactive shell that is not a login shell is started, bash reads and executes commands from ~/.bashrc, if that file exists.

Não ter seu conjunto de prompts pode ocorrer em dois contextos diferentes e, em seguida, em shells de login e em shells de não-login. Se você usar um gerenciador de exibição para fazer login diretamente na GUI, não encontrará shells de login, a menos que você alterne para um console virtual (por exemplo, Ctrl Alt + F1 para F6) No entanto, você pode testar seu perfil de login na GUI abrindo um novo shell de login explicitamente: bash -l .

Problema ocorre com shells não-login

Se o problema ocorrer com, por exemplo, terminais GUI normais, o seu ~/.bashrc está ausente ou foi editado para excluir o fornecimento de um arquivo global, provavelmente /etc/bashrc .

  • Se ~/.bashrc não existir, deve haver um /etc/skel/.bashrc usado para criá-lo para novos usuários. Simplesmente copie esse arquivo para o seu diretório pessoal, e seu prompt padrão deve retornar para o próximo novo shell que você abrir.

  • Se ~/.bashrc existir, verifique se há uma linha em algum lugar que origine /etc/bashrc :

    . /etc/bashrc
      -OR-
    source /etc/bashrc
    

    Se não, verifique se esse arquivo existe (deve, pelo menos na maioria das distribuições linux) e adicione essa linha ao seu ~/.bashrc .

Problema ocorre com shells de login

Se o problema ocorrer com os shells de login e com os shells não-login, o problema provavelmente é o mesmo que o anterior. Se ocorrer somente com shells de login, você não possui um dos arquivos mencionados para shells de login na citação INVOCATION acima, ou eles não usam seu ~/.bashrc , o que é normal em a maioria das distribuições linux. Se nenhum desses arquivos existir, crie ~/.bash_profile com isso:

if [ -f ~/.bashrc ]; then
  . ~/.bashrc
fi

Isso permite que você mantenha a configuração em um único arquivo ( ~/.bashrc ).

Se não importa o que você fizer, não será possível obter um aviso, você pode criar um e colocar em ~/.bashrc desta maneira:

if [ "$PS1 ]; then
    PS1= .... # see below
fi

Isso ocorre porque $ PS1 está definido e tem um valor padrão para shells interativos, e você não quer configurá-lo de outra forma, já que outras coisas podem usar esse valor para determinar se este é um ambiente interativo.

A página man bash contém uma seção PROMPTING que descreve como definir um prompt com recursos dinâmicos, como seu nome de usuário e o diretório de trabalho atual, o que seria, por exemplo:

PS1="\u \w:"

Há um guia para usando cores aqui . Preste atenção ao fato de que você deve incluir caracteres não impressos em \[ e \] (há uma discussão sobre isso no final da resposta sobre cores).

    
por 22.04.2014 / 15:51
0

Tive que atualizar o Cygwin bash por motivos de segurança.

a antiga bash = 4.1.10 (4) -release (i686-pc-cygwin) por volta de 2009

$ echo $PS1

\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n\$

a nova festança = 4.4.12 (3) -release (i686-pc-cygwin) por volta de 2016

Para obter exatamente a mesma aparência, adicione .bashrc :

#

GREEN="\[$(tput setaf 2)\]"

YELLOW="\[$(tput setaf 3)\]"

RESET="\[$(tput sgr0)\]"

PS1="\n${GREEN}\u@\h ${YELLOW}\w${RESET}\n$ "

cd $HOME

#

nota: incluindo o cd $HOME

    
por 25.02.2017 / 00:18