Modifier l'invite Cygwin

Réponses:

26

La PS1variable d'environnement contrôle l'invite:

PS1='\w $ '

Pour plus d'informations sur ce sujet et d'autres sujets de configuration d'invite, tapez man bash(en supposant que bashc'est votre shell) et consultez la section "PROMPTION".

Pour rendre cette modification permanente, modifiez votre ~/.bashrcfichier pour ajouter la ligne ci-dessus.

Greg Hewgill
la source
1
~ / .bashrc n'est pas exécuté pour un shell de connexion. mettez à jour ~ / .bash_profile à la place. J'utilise la chaîne d'invite suivante, qui contient d'autres informations utiles, pas seulement le chemin: PS1 = '[\ e [32m] \ t [\ e [33m] \ w [\ e [31m] \! [\ e [0m] \ $ '
bobmcn
1
N'oubliez pas que normalement .profile génère .bashrc, de sorte qu'en fait, un shell de connexion est initialisé avec les mêmes éléments qu'un shell sans connexion plus ce qui est dans .profile. Si c'est le cas, mettre votre nouvelle invite dans .bashrc tue deux oiseaux avec une pierre.
1

Un shell de connexion est un shell dont le premier caractère de l'argument zéro est un - ou un commençant par l'option --login. Lorsque bash est invoqué en tant que shell de connexion interactif, ou en tant que shell non interactif avec l'option --login, il lit et exécute d'abord les commandes du fichier / etc / profile, si ce fichier existe. Après avoir lu ce fichier, il recherche ~ / .bash_profile, ~ / .bash_login et ~ / .profile, dans cet ordre, et lit et exécute les commandes à partir du premier qui existe et est lisible. L'option --noprofile peut être utilisée au démarrage du shell pour inhiber ce comportement Lorsqu'un shell interactif qui n'est pas un shell de connexion est démarré, bash lit et exécute les commandes à partir de ~ / .bashrc, si ce fichier existe.

Cela dépend donc ... je n'utilise pas le --login, je dois donc l'ajouter à ~ / .bashrc

jr00n
la source
1

Je ne sais pas pourquoi avoir moins de contexte est mieux que d'en avoir plus ... Le fait qu'il y ait une nouvelle ligne dans l'invite signifie que la longueur de l'invite ne devrait pas être un problème, mais essayez ceci:

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

ou

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

Cela vous donne une invite colorée:

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

De cette façon, vous voyez toujours votre contexte de dossier complet, mais vous obtenez toujours une ligne complète pour saisir du texte. (J'ai omis l'espace habituel après le '$' car il est coloré pour plus de clarté).

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

Pour ceux qui veulent également le contexte '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\] '

Cela vous donne une invite colorée:

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

C'est ma préférence.

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.

(Non, il n'y a pas de fautes d'orthographe dans ce billet - Queen's English;))

skeetastax
la source
1

.bashrc n'a pas fonctionné pour moi. J'ai ajouté ceci à la fin de / etc / profile et cela a fonctionné:

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

J'utilise la version 2.11.2 de Cygwin (dernière version en date du 18/12/2018).

Samuel
la source
0

Mettez ceci dans votre ~ / .bashrc. Donne une invite colorée et conserve le statut sur une seule ligne.

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