Forcer l'invite sur des répertoires spécifiques

4

Existe-t-il un moyen de modifier l'invite sur des répertoires différents sur le même ordinateur? Par exemple, je veux une simple invite "[\ W] \ $" dans les répertoires de développement.

Des idées?

Konzepz
la source
1
Cela dépend du shell que vous utilisez.
Dennis Williamson

Réponses:

6

Vous pouvez mettre quelque chose comme ça dans votre .bashrc.

prompt-function() {
    case $PWD in
        /a/dev/dir\
        |/another/dev/dir) 
            PS1="[\W] \$"
            ;;
        *)
            # Change this to the default prompt
            PS1="\$ "
            ;;
     esac
}

PROMPT_COMMAND=prompt-function
Wuffers
la source
+1 Je voudrais utiliser une casedéclaration au lieu d'une série de elsifdéclarations. Vous pouvez même placer les répertoires dans un tableau et les parcourir avec une boucle for. Vous pouvez utiliser des motifs globulants avec l’une de ces techniques ou utiliser des regex avec [[ $PWD =~ $pattern ]].
Dennis Williamson
@ Dennis: J'ai édité ma réponse avec une casedéclaration. Merci pour la suggestion.
Wuffers
Si l'action est identique, vous pouvez la répertorier une fois après les autres cas séparés par des caractères de canal. foo|bar) action;;Vous pouvez mettre les cas sur des lignes séparées en mettant une barre oblique inverse et une nouvelle ligne avant ou après le caractère de canal.
Dennis Williamson
@ Dennis: Modifié ma réponse en conséquence, encore. Merci pour la suggestion!
Wuffers