8 votes

Comment changer mon Shell par défaut en bash si je n'ai pas accès à chsh ni à /etc/passwd ?

Je travaille sur un compte Linux distant d'une université, et le Shell par défaut est tristement csh sans compléter l'onglet. Comment puis-je changer le Shell par défaut de mon compte en bash ? chsh n'est pas disponible.

11voto

jjlin Points 14572

Vous devriez probablement essayer de demander à vos sysadmins s'ils peuvent changer votre Shell par défaut pour vous. S'ils ne peuvent pas ou ne veulent pas (comme c'était le cas quand j'étais à l'université), la solution de contournement que j'ai utilisée était d'ajouter

# Exec bash if using an interactive shell.
if ($?prompt) then
    setenv SHELL /path/to/bash
    exec $SHELL
endif

à .cshrc . (Assurez-vous de remplacer /path/to/bash avec un vrai chemin, bien sûr. Cela pourrait même être une version de bash qui réside sous votre répertoire personnel, si la version fournie par le système est trop dépassée à votre goût). Pour des raisons d'efficacité, il est préférable d'effectuer cette opération dès le début du processus d'installation. .cshrc dans la mesure du possible, afin d'éviter des .cshrc traitement qui deviendra discutable une fois que bash remplace le csh processus.

3voto

Daniel Andersson Points 22765

Vous pouvez simplement vous connecter avec

ssh -t yourhost bash

pour exécuter le Shell de Bash automatiquement lorsque vous vous connectez.


Dans les commentaires ci-dessous, vous pouvez voir l'alternative

ssh -t yourhost exec bash

exec va lancer un nouveau processus et quitter l'ancien, de sorte que l'option csh se terminera directement.

Si append -l à la fin de la commande comme argument à Bash, il sera traité comme un login Shell, mais peut-être que ce n'est pas nécessaire.

1voto

MattC Points 131

La meilleure solution que j'ai trouvée se trouve sur stackexchange. Voici le lien stackexchange et voici la solution :

créez un fichier .profile dans votre répertoire personnel et collez-y les éléments suivants, ou ajoutez-les à la fin de votre .profile si vous en avez déjà un.

case $- in
  *i*)
    # Interactive session. Try switching to bash.
    if [ -z "$BASH" ]; then # do nothing if running under bash already
      bash=$(command -v bash)
      if [ -x "$bash" ]; then
        export SHELL="$bash"
        exec "$bash"
      fi
    fi
esac

0voto

user454581 Points 1

J'ai beaucoup cherché lorsque vous utilisez l'authentification LADP via PAM , je pense que la meilleure solution est de mettre Shell=/bin/bash exec /bin/bash dans le fichier .profile du répertoire personnel de l'utilisateur

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X