Comment démarrer en bash lors de la connexion à mon serveur?
29
J'ai un serveur Debian hébergé. Lorsque je me connecte via ssh, je suis accueilli par un environnement sh. Comment le changer pour commencer dans un environnement bash?
usermod fonctionnait comme un charme. Existe-t-il un moyen de le définir par défaut sur bash lorsque j'ajoute un nouvel utilisateur, ou dois-je exécuter la commande à chaque fois?
Si vous utilisez adduser, il doit le définir par défaut sur bash. La valeur par défaut est configurée dans /etc/adduser.conf. Sinon, spécifiez explicitement le shell avec useradd.
jordanm
5
Vous modifiez /etc/passwdoù la dernière entrée est le shell par défaut. Faites-le /bin/bash.
Alternativement, vous pouvez modifier la valeur par défaut du système de /bin/shne pas être bash.
Yo, quoi de neuf avec le downvote drive-by? Par exemple, Ubuntu est par défaut à /bin/shêtre /bin/dash. Et pour ce que ça vaut, les deux autres réponses sont identiques et atteignent la même fin par des moyens différents. Peu importe.
Dirk Eddelbuettel
4
Les modifications manuelles de /etc/passwdsont fortement déconseillées. Une erreur d'édition peut interrompre les connexions pour tous les utilisateurs, nécessitant un support de récupération ou un démarrage en mode utilisateur unique pour réparer. Il existe des outils tels que le usermodchangement /etc/passwd.
jordanm
1
Absurdité. Exécuter Linux depuis '94 ici. Jamais éclaté /etc/passwd.
Dirk Eddelbuettel
2
Heureux d'entendre que vous avez été très prudent. Tout le monde ne l'a pas fait. Une autre note sur votre mise à jour, le lancement /bin/bashen /bin/shest le même que l' exécution avec --posix, ce qui peut avoir des résultats indésirables.
jordanm
Regardez, je suis aussi développeur / mainteneur Debian depuis 1995. Nous avions l'habitude d'avoir bash par défaut, nous sommes passés à des shells plus simples pour diverses raisons. J'ai utilisé /bin/bashcomme coque toutes ces années sur toutes les machines. Vous avez besoin d'un argument plus concret.
Dirk Eddelbuettel
2
Vous devez modifier votre profil utilisateur, vous pouvez le faire directement en modifiant le /etc/passwdfichier, ou vous pouvez utiliser la usermodcommande pour le faire pour vous. La syntaxe que vous recherchez ressemble à ceci:
Le shell système par défaut /bin/shdans les versions récentes d'Ubuntu est configuré pour être /bin/dash. En exécutant simplement la commande suivante:
sudo dpkg-reconfigure dash
vous pouvez le restaurer à son ancienne valeur par défaut /bin/bash.
Avec cela, vous pouvez obtenir l'effet souhaité d'avoir bashun shell interactif sans modifier les paramètres utilisateur (non chshou usermod), et cela fonctionnera pour tous les utilisateurs dont le shell est actuellement défini sur /bin/sh.
Il n'y a qu'un petit inconvénient à cela: le temps de démarrage d'Ubuntu peut légèrement augmenter, car dashprend moins de mémoire à charger et légèrement plus rapide à exécuter (pas étonnant - il est si limité en fonctionnalités). Mais je pense qu'il sera assez difficile de mesurer cet effet, notamment pour l'environnement d'hébergement.
De plus, il est parfois ennuyeux de voir des scripts shell qui ne fonctionnent pas correctement car ils utilisent bashdes fonctionnalités avancées qui ne sont pas prises en charge par dash. L'utilisation de cette recette garantira que cela ne se produira pas.
Pour plus d'informations, consultez le wiki Ubuntu sur ce problème .
vous devez garder les cas d'utilisation à part: /bin/shest utilisé comme interpréteur pour les scripts shell compatibles POSIX - ce n'est pas nécessairement le meilleur shell interactif; si vous voulez bashêtre votre shell système, vous devez définir votre shell de connexion préféré en utilisant chshou des adduserappels appropriés . l'utilisation dpkg-reconfigureest un mauvais choix si userA veut zsh et userB veut bash et tous deux insistent pour avoir / bin / sh comme shell par défaut.
umläute
si userA est explicitement configuré pour zsh, et userB pour bashils l'ont. Si userC est configuré sur sh, il l'aura bash, ce qui est de toute façon Ubuntu par défaut pour les nouveaux utilisateurs
mvp
bien sûr, mais votre solution a suggéré quelque chose comme dpkg-reconfigure zshdéfinir zshcomme / bin / sh, puis dpkg-reconfigure dashdéfinir dashcomme / bin / sh qui est une sorte de blocage; je dis principalement qu'il est préférable de définir le shell de connexion sur le shell que l'on veut utiliser plutôt que de passer par des cercles pour faire de / bin / sh un bon shell de connexion.
umläute
Je dis seulement que cela dpkg-reconfigure dashpeut faire shvaloir bash, plutôt que paralysé dash. Tous les autres obus seront toujours intacts.
mvp
1
Dans le cas où vous essayez d'utiliser un compte partagé (pour une raison quelconque) et que vous ne pouvez pas modifier le shell par défaut, vous pouvez exécuter
ssh -t <user@hostname> bash -l
Si vous devez conserver votre environnement à partir d'un autre shell, vous pouvez d'abord exécuter ce shell; par exemple
Réponses:
En tant qu'utilisateur régulier, vous pouvez modifier votre shell de connexion par défaut à l'aide de la
chsh
commande. Voici un exemple:Une autre option consiste à utiliser usermod en tant que root:
la source
adduser
, il doit le définir par défaut sur bash. La valeur par défaut est configurée dans/etc/adduser.conf
. Sinon, spécifiez explicitement le shell avecuseradd
.Vous modifiez
/etc/passwd
où la dernière entrée est le shell par défaut. Faites-le/bin/bash
.Alternativement, vous pouvez modifier la valeur par défaut du système de
/bin/sh
ne pas être bash.la source
/bin/sh
être/bin/dash
. Et pour ce que ça vaut, les deux autres réponses sont identiques et atteignent la même fin par des moyens différents. Peu importe./etc/passwd
sont fortement déconseillées. Une erreur d'édition peut interrompre les connexions pour tous les utilisateurs, nécessitant un support de récupération ou un démarrage en mode utilisateur unique pour réparer. Il existe des outils tels que leusermod
changement/etc/passwd
./etc/passwd
./bin/bash
en/bin/sh
est le même que l' exécution avec--posix
, ce qui peut avoir des résultats indésirables./bin/bash
comme coque toutes ces années sur toutes les machines. Vous avez besoin d'un argument plus concret.Vous devez modifier votre profil utilisateur, vous pouvez le faire directement en modifiant le
/etc/passwd
fichier, ou vous pouvez utiliser lausermod
commande pour le faire pour vous. La syntaxe que vous recherchez ressemble à ceci:la source
Le shell système par défaut
/bin/sh
dans les versions récentes d'Ubuntu est configuré pour être/bin/dash
. En exécutant simplement la commande suivante:vous pouvez le restaurer à son ancienne valeur par défaut
/bin/bash
.Avec cela, vous pouvez obtenir l'effet souhaité d'avoir
bash
un shell interactif sans modifier les paramètres utilisateur (nonchsh
ouusermod
), et cela fonctionnera pour tous les utilisateurs dont le shell est actuellement défini sur/bin/sh
.Il n'y a qu'un petit inconvénient à cela: le temps de démarrage d'Ubuntu peut légèrement augmenter, car
dash
prend moins de mémoire à charger et légèrement plus rapide à exécuter (pas étonnant - il est si limité en fonctionnalités). Mais je pense qu'il sera assez difficile de mesurer cet effet, notamment pour l'environnement d'hébergement.De plus, il est parfois ennuyeux de voir des scripts shell qui ne fonctionnent pas correctement car ils utilisent
bash
des fonctionnalités avancées qui ne sont pas prises en charge pardash
. L'utilisation de cette recette garantira que cela ne se produira pas.Pour plus d'informations, consultez le wiki Ubuntu sur ce problème .
la source
/bin/sh
est utilisé comme interpréteur pour les scripts shell compatibles POSIX - ce n'est pas nécessairement le meilleur shell interactif; si vous voulezbash
être votre shell système, vous devez définir votre shell de connexion préféré en utilisantchsh
ou desadduser
appels appropriés . l'utilisationdpkg-reconfigure
est un mauvais choix si userA veut zsh et userB veut bash et tous deux insistent pour avoir / bin / sh comme shell par défaut.zsh
, et userB pourbash
ils l'ont. Si userC est configuré sursh
, il l'aurabash
, ce qui est de toute façon Ubuntu par défaut pour les nouveaux utilisateursdpkg-reconfigure zsh
définirzsh
comme / bin / sh, puisdpkg-reconfigure dash
définirdash
comme / bin / sh qui est une sorte de blocage; je dis principalement qu'il est préférable de définir le shell de connexion sur le shell que l'on veut utiliser plutôt que de passer par des cercles pour faire de / bin / sh un bon shell de connexion.dpkg-reconfigure dash
peut fairesh
valoirbash
, plutôt que paralysédash
. Tous les autres obus seront toujours intacts.Dans le cas où vous essayez d'utiliser un compte partagé (pour une raison quelconque) et que vous ne pouvez pas modifier le shell par défaut, vous pouvez exécuter
Si vous devez conserver votre environnement à partir d'un autre shell, vous pouvez d'abord exécuter ce shell; par exemple
la source
-l
option?Ni l'un
chsh
ni l' autreusermod
ne travaillait pour moi, mais j'ai trouvé que vous pouvez le faire via PuTTY.Aller à
Connection > SSH
et régler l'Remote command
àbash
.Notez que vous ne pourrez pas utiliser
exit
votre shell par défaut, cela fermera simplement la connexion.la source