Sur l'un de mes serveurs, l'invite est [user @ host path] ... et je peux en fait appuyer sur "tab" pour remplir automatiquement le chemin.
Mais sur mon nouveau serveur Ubuntu, ce n'est qu'un signe dollar?
Sur l'un de mes serveurs, l'invite est [user @ host path] ... et je peux en fait appuyer sur "tab" pour remplir automatiquement le chemin.
Mais sur mon nouveau serveur Ubuntu, ce n'est qu'un signe dollar?
Réponses:
Puisque vous posez deux questions, je répondrai aux deux.
Parce que votre shell ne le prend pas en charge ou que la tabulation n'est pas activée.
Pour résoudre ce problème, vous devez d'abord découvrir ce qu'est votre shell. Sur la machine dont vous aimez la coque, exécutez
echo $SHELL
Vous pouvez voir le commun /bin/bash
, ou quelque chose de moins commun comme /bin/tcsh
, /bin/zsh
ou autre chose entièrement.
Maintenant, vous pouvez changer votre shell sur la machine Ubuntu. Sur cette machine, assurez-vous d'abord que le shell souhaité existe. Étant donné que le shell peut ne pas être au même emplacement sur la machine Ubuntu que sur l'autre, vérifiez l'emplacement en tapant
which bash
Cela vous donnera le chemin du shell que vous voulez, quelque chose comme /bin/bash
, /usr/bin/bash
ou /usr/local/bin/bash
. Bien sûr, si vous voulez un autre shell que bash, vous dites which tcsh
, which zsh
ou similaire.
Si vous ne voyez pas de chemin, mais que vous voyez à la place bash not found
, vous devrez alors installer le package approprié, puis utiliser which
à nouveau pour savoir où le shell a été installé.
Avec le chemin de votre shell choisi, vous pouvez enfin changer votre shell en exécutant
chsh -s /bin/bash
remplacer /bin/bash
par le chemin approprié pour votre shell de choix.
En raison de vos variables d'environnement rapides $PS1
, $PS2
et ainsi de suite. Ces éléments ne sont généralement pas portables entre les coques, voici donc quelques liens pour les candidats potentiels:
bash
a un manuel complet , avec des pages sur les variables Bash (y compris PS1
, & c) et l' impression d'une invite (qui décrit PROMPT_COMMAND
le nom long de PS1
). Ajoutez la ligne suivante à votre~/.bashrc
export PS1='[\u@\h \w] '
tcsh
a un manuel en ligne (juste sa page de manuel), avec une section sur les variables d'environnement prompt . Ajoutez la ligne suivante à votre~/.tcshrc
set prompt='[%n@%m %~] '
zsh
a un guide de l'utilisateur , avec un guide simple pour les invites , ainsi qu'un manuel , avec une référence très détaillée sur l' expansion des invites . Ajoutez la ligne suivante à votre~/.zshrc
export PS1='[%n@%m %~] '
Bash n'est pas le seul shell.
Votre problème pourrait être une simple question de ne pas avoir de .profile ou .bashrc qui définit PS1, ou il se pourrait que votre shell de connexion ne soit pas bash du tout.
Bash utilise gnu readline
pour des choses comme la complétion des onglets. C'est un sujet compliqué et readline a même son propre fichier de configuration par utilisateur.
Voir man bash
, man sh
et man 3 readline
. Bash répond --version
. Sur de nombreux systèmes Linux, /bin/sh
n'est pas réellement bash, mais généralement une version paralysée de ash
.
dash
au lieu de ash
? je pensais avoir lu quelque chose comme ça
je suppose que vous n'utilisez pas bash, mais sh et votre invite n'est pas définie correctement (si cela est même possible avec sh).
vous pouvez obtenir votre shell actuel en tapant: echo $SHELL
si vous voulez démarrer bash, tapez simplement bash
sh
. L'écho $SHELL
imprimera une variable d'environnement appelée SHELL
. Cette variable d'environnement pointe simplement vers le shell et n'est définie que par bash. Il est à peu près inutile de déterminer quel shell est en cours d'exécution, car cela indique seulement, faiblement, qu'un parent du processus actuel peut avoir été bash.
/bin/sh
, oui. Mais je ne connais aucun obus dont le nom est sh
. Je peux penser ash
, ksh
, csh
, bash
, zsh
et tcsh
. Le premier est l'habituel / bin / sh sur linux et NetBSD, le dernier est le shell FreeBSD habituel, et les autres sont des shells optionnels. De nombreux environnements de bureau changent le shell de connexion des utilisateurs en bash tout en laissant / bin / sh sous forme de cendre.
sh
est le shell Bourne. en.wikipedia.org/wiki/Bourne_shell Certains systèmes (Solaris) sont toujours livrés avec une version du shell Bourne qui n'est pas seulement une copie d'une des réimplémentations (ash, dash, bash, ksh, zsh).
Vous devez définir une variable appelée PS1 sur l'un de vos scripts de connexion, par exemple / etc / profile ou ~ / .bashrc. Cela dépendra de votre distribution.
Exemple: http://www.cyberciti.biz/tips/howto-linux-unix-bash-shell-setup-prompt.html
pwd
pour imprimer le nom du répertoire de travail actuel. Et dites-vous que la complétion de tabulation ne fonctionne pas non plus? (Sur certaines machines que j'utilise, je ne reçois cette brève invite que si je me connecte en tant que root, et je laisse volontiers cela en place comme un bel avertissement. Comme on a rarement, voire jamais, besoin de se connecter en tant que root: vous n'utilisez pas root , êtes-vous?)