web-dev-qa-db-fra.com

Comment afficher le chemin actuel dans la commande Invite sous linux sh (pas bash)?

Je voudrais afficher le chemin actuel dans l'invite sh (pas bash Shell), qui ne montre actuellement que "#", j'ai essayé avec l'introduction de cette

env PS1="$(whoami)@$(hostname):$(pwd)"

et

set PS1="$(whoami)@$(hostname):$(pwd)"

dans /etc/profile.

Mais il est évident que cela ne s’actualise pas lorsque le répertoire est modifié ou que l’utilisateur change. S'il vous plaît suggérer un moyen de rendre cette dynamique.

40
Bleamer

Les substitutions de commandes entre guillemets " sont immédiatement développées. Ce n'est pas ce que vous voulez pour votre invite. Les guillemets simples ' préservent les substitutions dans $PS1 qui ne sont ensuite développés que lors de l'affichage de l'invite. Cela devrait donc fonctionner:

export PS1='$(whoami)@$(hostname):$(pwd)'

Si vous voulez le signe dollar habituel et un espace à la fin de votre invite, ajoutez simplement $ à la fin (aucune évasion nécessaire): export PS1='$(whoami)@$(hostname):$(pwd)$ '

72
mpy
sh-4.2$ export PS1="\u@\h:\w>"
jenny@serenity:~>cd /usr/local
jenny@serenity:/usr/local>
12
Jenny D

Cette commande fonctionne pour moi.

export PS1="\u@\h: \W:$"


\u = nom d'utilisateur
\h = nom d'hôte
\W Nom du dossier actuel (chemin d'accès non complet)

4
rangsiman

Une solution consistait à utiliser des guillemets simples au lieu de guillemets doubles. Cependant, ce n'est pas tout à fait la bonne réponse. Ce que vous voulez vraiment faire, c'est différer l'évaluation du code dans votre invite jusqu'à ce que l'invite soit utilisée.

set PS1="$(pwd)" 

définit l'invite dans le répertoire de travail à partir de la commande set.

set PS1="\$(pwd)" 

ne développe pas $ (pwd). Au lieu de cela, PS1 est défini sur la valeur littérale de $ (pwd).

Testez/comprenez ceci en exécutant:

echo $PS1

. Si vous voyez la chaîne: $ pwd, votre invite fonctionne. Si vous voyez le chemin littéral, l'invite est interrompue car elle a été définie de manière statique.

1
MaasSql

Utilisez la commande ci-dessous pour définir comme dans cpanel.

exportez PS1='$(whoami)@${HOSTNAME%%.*} [$ (pwd)] # '

1
Milan

On pourrait envisager d’enrichir l’invite en ajoutant des couleurs. Par exemple:

export PS1='\[\e[0;36m\]\u\[\e[0m\]@\[\e[0;33m\]\h\[\e[0m\]:\[\e[0;35m\]\w\[\e[0m\]\$ '
0
Arvid