Comment faire de Bash mon shell par défaut sur Ubuntu?

101

J'ai un .bash_profiledans mon répertoire personnel, mais il ne se lance pas à la connexion. Si je fais ce qui suit, alors les choses semblent être comme je l’attendais:

ssh myhost
bash
source ~/.bash_profile

Mais normalement, tout se passe lors de la connexion. Pensées?

James A. Rosen
la source
3
Assurez-vous également que vous n'avez pas de ~/.profileou ~/.bash_login, car un seul des trois est d'origine. (J'ai oublié l'ordre exact.)
grawity
3
Pourquoi avez-vous une question différente dans le titre et une autre dans le corps de votre message?
Pabouk

Réponses:

170

Utilisation:

chsh

Entrez votre mot de passe et indiquez le chemin d'accès au shell que vous souhaitez utiliser.

Pour Bash, ce serait /bin/bash. Pour Zsh, ce serait /usr/bin/zsh.

Akira
la source
15
+1 - pas sûr pourquoi l'OP a décidé que la modification du fichier de mot de passe était un meilleur choix, mais c'est la meilleure réponse
kdgregory
1
Ouais me battre à ce sujet, c'est la manière standard.
John T
1
Et sur Ubuntu, le chemin d'accès au shell que vous voulez utiliser est ... / bin / bash (et / bin / sh n'est pas la même chose)
Harry Wood
49
Ou vous pouvez utilisersudo chsh -s /bin/bash username
Oleg Vaskevich
7
Vous devez vous déconnecter et vous reconnecter pour voir ce changement.
Neil Traft
37

En plus de la réponse d'Akira, vous pouvez également modifier votre fichier / etc / passwd pour spécifier votre shell par défaut.

Vous trouverez une ligne comme celle-ci:

john:x:1000:1000:john,,,:/home/john:/bin/sh

Le shell est spécifié à la fin.

John T
la source
8
Mieux vaut utiliser la commande 'chsh' comme suggéré par akira - moins de chance de foirer quelque chose par erreur.
Lars Haugseth
5
sans oublier «chsh» est disponible lorsque vous ne pouvez pas écrire dans / etc / passwd
quack quixote
1
Mais si vous avez ainsi accès à la modification de /etc/passwdet que vous êtes prudent, la réponse de John exploite pleinement les outils fournis par le système.
AJP
3
Vous devez vous déconnecter et vous reconnecter pour voir ce changement.
Neil Traft
2
Si vous utilisez un serveur sans mot de passe utilisateur (si vous fournissez un accès uniquement via des clés ssh publiques / privées), cela a également beaucoup de sens. chsh nécessite un mot de passe.
Keith John Hutchison
4

Vous pouvez vérifier votre programme de terminal. Il peut être configuré pour exécuter / bin / sh plutôt que / bin / bash

Bash exécute .bash_profile uniquement pour les sessions de connexion. .bashrc est exécuté pour toutes les sessions bash, pas seulement les sessions de connexion. Essayez d’acheter .bash_profile à partir de .bashrc (évitez les dépendances circulaires!) Ou de configurer votre programme de terminal pour qu’il exécute / bin / bash -l en tant que programme shell.

Tadeusz A. Kadłubowski
la source
2
programme terminal n’a rien à voir avec le problème car c’est le sshd de la machine distante, qui engendre le nouveau shell.
akira
3

Activer bash:

$ /bin/bash

Changer de shell pour l'utilisateur:

$ sudo usermod -s /bin/bash username

où:

  -s, --shell SHELL             new login shell for the user account
Umanshield
la source
2
(1) Qu'entendez-vous par «enable bash»? (2) L'utilisateur souhaite modifier son propre shell de connexion sur un système distant. Pourquoi pensez-vous qu'il a sudoaccès à ce système? Pourquoi donnez-vous des instructions pour changer le shell de connexion d'un autre utilisateur?
G-Man
Utiliser chsh (comme suggéré ci-dessus) n'a pas fonctionné pour moi. Cette commande a fait!
Per Lindberg le
2

Une alternative consiste à renommer votre script de démarrage en .profile. Ce fichier est en train d’être source par la plupart des shells Unix .

mathk
la source
1

Pour définir n'importe quel shell par défaut, vérifiez d'abord qu'il est installé et reconnu sur votre ordinateur en consultant le contenu de /etc/shells:

$ cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/bash
/usr/bin/bash
/bin/rbash
/usr/bin/rbash
/bin/dash
/usr/bin/dash
/usr/bin/fish

Puis utilisez chshpour changer votre shell:

$ sudo chsh -s /usr/bin/bash $(whoami) # or sudo chsh -s /bin/bash $(whoami)

Références

  1. https://linux.die.net/man/1/cat
  2. https://linux.die.net/man/1/whoami
  3. https://linux.die.net/man/5/shells
  4. https://linux.die.net/man/1/chsh
Behrang
la source
0

Il n’ya pas assez d’informations dans votre question pour que je puisse le dire, mais j’ai déjà rencontré le même problème. En supposant que vous ayez déjà défini / bin / bash dans votre entrée de mot de passe, il se peut que ce soit la façon dont votre terminal démarre.

Si vous essayez de lancer un terminal graphique, supposez gnome-terminalque le shell lise vos fichiers de démarrage bash. Cependant, cela ne se produit pas sur Ubuntu et peut-être sur d'autres systèmes par défaut.

La façon dont je l'ai corrigé sur Ubuntu consiste à éditer les préférences de gnome-terminal et à définir la commande de démarrage sur bash -l. -lest l'abréviation de --login. Cela indique à bash de démarrer en tant que shell de connexion, ce qui lui permet de charger les scripts de démarrage tels que vous les obtenez lors de la connexion via ssh.

Je suis sûr que la raison en est que c’est bien, mais j’ai trouvé cela surprenant et un peu gênant de partager les mêmes profils sur les systèmes linux, cywgin et macos.

edk750
la source