web-dev-qa-db-fra.com

Remplacez $ in terminal prompt par user @ host lors de l'utilisation de SSH

J'utilise Ubuntu Server sur SSH et je vois $ à la place du nom de l'utilisateur (disons test@desktop, par exemple).

Comment faire en sorte que le terminal affiche test@desktop au lieu de $?

1
antonio8909

Vous devez définir la variable PS1 sur le système client et vous assurer que la définition est obtenue lorsque vous ssh.

Il est possible qu'il soit déjà défini dans .bashrc sur le système distant et qu'il vous suffit donc de générer .bashrc en lançant un shell interactif (remplacez remote-sys par le nom de votre système distant, bien évidemment)

ssh remote-sys -t bash -i

Si cela ne fonctionne pas, car .bashrc n'existe pas sur le système distant ou si PS1 n'est pas défini et vous souhaitez utiliser les mêmes paramètres sur le système distant que votre système local, puis copiez-les de nouveau. votre propre .bashrc:

scp ~/.bashrc remote-sys:.bashrc

Ou vous pouvez créer un fichier uniquement pour définir l'invite comme vous le souhaitez sur le système distant ... par exemple

nano .set-Prompt

entrez le texte (ceci définit l'utilisateur @ hôte comme invite)

export PS1="\u@\h "

ou si vous voulez que cela ressemble à l'invite Ubuntu user@Host:working-directory$

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

ou personnaliser comme bon vous semble. Enregistrez le fichier et quittez-le, puis scp sur le système distant.

scp .set-Prompt remote-sys:.set-Prompt

Lorsque vous ssh sur la machine, vous devrez explicitement rechercher le fichier et indiquer à bash de rendre le shell interactif:

ssh remote-sys -t "bash --rcfile ~/.set-Prompt -i"

Si vous faites Sudo -i pour passer à la racine sur le système distant, l'invite changera à nouveau car la racine .bashrc sera obtenue.

2
Zanna

PS1="/u@/h" vous donnera ce que vous demandez, bien que je ne vous le recommande pas, car il vous sera difficile de déterminer si vous êtes en mode standard ou superutilisateur.

Pour revenir à la valeur par défaut pour 16.04 (et plus tôt?), Utilisez PS1="\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$"

Vous pouvez rendre les modifications permanentes en modifiant /etc/bash.bashrc et en ajoutant vos modifications avec votre éditeur favori.

Sources: cette page et test.

2
Elder Geek

Si vous utilisez SSH dans une session sh, ce qui, à mon avis, correspond à ce que vous avez actuellement, vous pouvez ajouter des variables et des commandes à votre PS1:

PS1='$USER@$(hostname)\$ '

Si vous êtes en SSH dans une session bash, vous avez options infinies , mais je vous conseillerais d'utiliser la valeur par défaut si vous vous intéressez à cela. Pour définir la PS1 uniquement dans la session en cours, lancez ceci:

PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '

Pour rendre la modification permanente, ouvrez le ~/.bashrc de la machine distante et ajoutez-y la ligne ci-dessus.

Voir Où puis-je trouver une référence complète pour la variable $ PS1? pour comprendre ce que fait la ligne ci-dessus.

P.S. Je n'utilise pas beaucoup SSH moi-même, vous devrez peut-être modifier d'autres paramètres pour que cela fonctionne.

2
wjandrea