Je voudrais afficher le chemin actuel dans l'invite sh (pas shell bash), 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.
$()
exécute un programme distinct; il serait plus rapide d'utiliser des variables d'environnement, telles que$LOGNAME
,$HOSTNAME
et à la$PWD
place.Réponses:
Les substitutions de commandes entre guillemets
"
sont immédiatement étendues. Ce n'est pas ce que vous voulez pour votre invite. Les guillemets simples'
préservent les substitutions$PS1
qui ne sont ensuite développées que lors de l'affichage de l'invite. Cela devrait donc fonctionner: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)$ '
la source
export PS1='$(whoami)@$(hostname):$(pwd)$'
j'ai enregistré les modifications dans/etc/profile
. Merci.set
travaillé pour moi (mais je n'avais pas de natifsh
). Mais je vais le changer pourexport
se conformer à votre configuration./etc/profile
(voir question) ou~/.profile
?!foo@localhost:/home/fools -la
lors de l'utilisationls -la
.la source
\u@\h:\w>
comme invite de commandeBusyBox v1.19.4 built-in shell (ash)
.Cette commande fonctionne pour moi.
Où
\ u = nom d'utilisateur
\ h = nom d'hôte
\ W Nom du dossier actuel (chemin d'accès complet)
la source
On pourrait envisager de pimenter l'invite en ajoutant des couleurs. Par exemple:
la source
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'à son utilisation.
définit l'invite sur le répertoire de travail à partir de la commande set.
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:
. Si vous voyez la chaîne: $ pwd, votre invite fonctionne. Si vous voyez le chemin littéral, l'invite est rompue car elle a été définie de manière statique.
la source
Utilisez la commande ci-dessous pour définir comme dans cpanel.
exportez PS1='$(whoami)@${HOSTNAME%%.*} [$ (pwd)] # '
la source