Comment passer dun shell inconnu à bash?

Jai été surpris de ne pas avoir trouvé cette question déjà sur le site. Donc, aujourdhui $ est arrivé après que je me suis connecté en tant que nouvel utilisateur. Cétait inattendu car linvite de mon utilisateur principal commence par username@computername:~$.

Alors, comment puis-je changer autre shell à bash?

Commentaires

  • Juste parce que $ est apparu plutôt que username@computername:~$ ne ' t signifie quil nétait ' t bash. Le formatage exact de linvite est défini par la variable PS1, qui peut être configurée ou personnalisée différemment pour différents utilisateurs.
  • @mouche Re: @frabjous echo $SHELL pour savoir quel est votre shell actuel.
  • @mouche @frabjous et commençant par un $ est en fait courant pour bash, certains shells non bash comme zsh utilisent le% out of the box, je crois que dautres shells utilisent autres choses.
  • @mouche étant /bin/sh ne signifie souvent ' que ' est généralement un lien symbolique vers autre chose. Je ' d type ls -l /bin/sh pour voir à quoi ' est un lien symbolique. Dans certains cas, le fait dêtre un lien symbolique vers quelque chose change son comportement, ' ne pense pas que bash est comme ça.
  • @xenoterracide – Utilisation de bash as /bin/sh désactive de nombreuses fonctionnalités bash (il passe en mode de conformité POSIX).

Réponse

En supposant que le shell inconnu prend en charge lexécution dune commande absolue, vous pouvez essayer: /bin/bash

Pour changer le shell par défaut, jutiliserais chsh(1). Exemple dutilisation: chsh -s /bin/bash $USER

Commentaires

  • Chsh change-t-il définitivement le shell ou juste pour la session en cours ?
  • @mouche de façon permanente; il modifie votre entrée dans /etc/passwd
  • @mouche, chsh(1) ne permettra que de passer à un shell répertorié dans /etc/shells (et est probablement disponible). chsh -l répertorie les alternatives. Attention, certains (comme nologin) sont définis pour des comptes qui ne doivent jamais être utilisés pour se connecter (belle façon de se verrouiller), il peut y avoir des ajouts locaux pour des usages spéciaux.

Réponse

Vous saisissez bash. Si vous voulez que cela soit permanent, changez le shell par défaut en /bin/bash en éditant /etc/passwd.

Ici « s quelques extraits de mon /etc/passwd:

avahi:x:84:84:Avahi daemon:/:/bin/false xenoterracide:x:1000:100::/home/xenoterracide:/bin/zsh postgres:x:88:88::/var/lib/postgres:/bin/zsh bob:x:1001:1001::/home/bob:/bin/bash usbmux:x:140:140:usbmux user:/:/sbin/nologin 

Le tout dernier champ contient le shell, Modification du champ après le dernier : vers un shell valide ou non valide fonctionnera. /bin/false et /sbin/nologin signifient tous deux lutilisateur na pas de véritable shell de connexion, bien que si pam nest pas configuré correctement, cela ne signifie pas quils ne peuvent pas se connecter (jai signalé un bogue à ce sujet dans Arch Linux, car vous pouvez vous connecter graphiquement sans avoir de shell de connexion). /bin/bash et /bin/zsh sont tous deux des shells valides, voir /etc/shells pour une liste des shells valides sur vos systèmes. Voici « mon /etc/shells si vous » êtes intéressé.

/bin/sh /bin/bash /bin/ksh /bin/zsh /bin/dash 

Oui, vous pouvez utiliser chsh ou usermod pour faire la même chose, noubliez pas quil ne sagit que de fichiers texte structurés et de TIMTOWTDI.

Commentaires

  • Vous souhaiterez probablement utiliser chsh au lieu de modifier manuellement passwd
  • @Michael il y a environ 5 (POOMA) façons différentes de changer le shell dans /etc/passwd Je nai ' pas envie de les énumérer , parce que je le fais toujours manuellement. chsh et usermod peuvent le faire tous les deux.
  • Jouer avec les fichiers de configuration est une mauvaise idée (TM), une erreur peut rendre le système inutilisable. Oui, cest souvent le seul / le plus rapide moyen, mais faites-le avec soin extrême .

Réponse

Si chsh ou si la modification manuelle de la configuration ne fonctionne pas, mais un script ~ / .profile est exécuté à la connexion, ajoutez cette ligne:

exec /bin/bash --login 

Commentaires

  • Après avoir cherché pendant un moment, cétait la solution dont javais besoin. Merci!
  • Excellente idée, surtout si le shell a sélectionné les sources de ce fichier au démarrage …
  • touch ~/.bash_profile ou autrement bash sexécutera en boucle: bash prend ~/.profile au cas où ~/.bash_profile ne ' Il existe.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *