Alterar prompt do Cygwin

Respostas:

26

A PS1variável de ambiente controla o prompt:

PS1='\w $ '

Para obter mais informações sobre este e outros tópicos de configuração de prompt, digite man bash(assumindo que bashseja seu shell) e consulte a seção "PROMPTING".

Para tornar essa alteração permanente, edite seu ~/.bashrcarquivo para adicionar a linha acima.

Greg Hewgill
fonte
1
~ / .bashrc não é executado para um shell de login. atualize ~ / .bash_profile. Eu uso a seguinte string de prompt, que tem outras informações úteis, não apenas o caminho: PS1 = '[\ e [32m] \ t [\ e [33m] \ w [\ e [31m] \! [\ e [0m] \ $ '
bobmcn 26/08/09
1
Não esqueça que, normalmente, origens .profile .bashrc, de modo que, na verdade, um shell de login é inicializado com o mesmo material que um shell que não é de login, mais o que está em .profile. Se for esse o caso, colocar seu novo prompt em .bashrc mata dois coelhos com uma cajadada só.
1

Um shell de login é aquele cujo primeiro caractere do argumento zero é um - ou um iniciado com a opção --login. Quando o bash é chamado como um shell de login interativo ou como um shell não interativo com a opção --login, ele primeiro lê e executa comandos do arquivo / etc / profile, se esse arquivo existir. Depois de ler esse arquivo, ele procura ~ / .bash_profile, ~ / .bash_login e ~ / .profile, nessa ordem, e lê e executa comandos do primeiro que existe e é legível. A opção --noprofile pode ser usada quando o shell é iniciado para inibir esse comportamento. Quando um shell interativo que não é um shell de login é iniciado, o bash lê e executa comandos do ~ / .bashrc, se esse arquivo existir.

Então depende ... eu não uso o --login, então devo adicioná-lo ao ~ / .bashrc

jr00n
fonte
1

Não sei por que ter menos contexto é melhor do que ter mais ... O fato de haver uma nova linha no prompt significa que o tamanho do prompt não deve ser um problema, mas tente o seguinte:

PS1='\[\e[1;33m\]\w\n\[\e[1;36m\]\$\[\e[0m\] '

ou

export PS1='\[\e[1;33m\]\w\n\[\e[1;36m\]\$\[\e[0m\] '

Isso fornece um prompt colorido:

/full/path/to/current/folder
$your command text here

Dessa forma, você sempre vê o contexto completo da pasta, mas ainda recebe uma linha completa para inserir texto. (Eu deixei de fora o espaço habitual após o '$' porque é colorido para maior clareza).

Colours are:
    1. '/full/path/...' = yellow;
    2. '$' (on next line) = cyan;
    3. 'your command text...' = light grey.

Para aqueles que também desejam o contexto 'user @ hostname':

PS1='\[\e[1;32m\]\u\[\e[1;35m\]@\[\e[1;32m\]\h \[\e[1;33m\]\w\n\[\e[1;36m\]\$\[\e[0m\] '

ou

export PS1='\[\e[1;32m\]\u\[\e[1;35m\]@\[\e[1;32m\]\h \[\e[1;33m\]\w\n\[\e[1;36m\]\$\[\e[0m\] '

Isso fornece um prompt colorido:

user@hostname /full/path/to/current/folder
$your command text here

Essa é a minha preferência.

Colours are:
    1. 'user' = (light) green;
    2. '@' = pink;
    3. 'hostname' = (light) green;
    4. '/full/path/...' = yellow;
    5. '$' (on next line) = cyan;
    6. 'your command text...' = light grey.

(Não, não há erros de ortografia neste post - inglês da rainha;))

skeetastax
fonte
1

.bashrc não funcionou para mim. Eu adicionei isso no final do / etc / profile e funcionou:

export PS1="\[\e[33m\]\w\[\e[0m\] \$ "

Estou usando o Cygwin versão 2.11.2 (versão mais recente a partir de 2018-12-18).

Samuel
fonte
0

Coloque isso no seu ~ / .bashrc. Dá um prompt colorido e mantém o status em uma única linha.

export PS1="\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\$ "
Sandeep
fonte