GNU/Linux >> Tutoriels Linux >  >> Linux

Comment puis-je utiliser Bash comme shell de connexion lorsque l'administrateur système refuse de me laisser le changer ?

L'administrateur système Unix où je travaille hésite à me donner accès pour changer mon shell de connexion de ksh pour bash . Il a donné diverses excuses, la plus drôle étant que depuis qu'ils écrivent tous leurs scripts pour ksh ils ne fonctionneront pas si j'essaie de les exécuter. Je ne sais pas d'où il tire ces idées, mais comme je n'arrive pas à le convaincre, y a-t-il une alternative que j'ai ?

(chsh est installé sur ces machines, mais nous utilisons des paires de clés publiques/privées pour la connexion, et je n'ai pas de mot de passe, donc quand chsh me demande un mot de passe je n'ai rien à lui donner. )

Réponse acceptée :

Lorsque vous vous connectez, le fichier ~/.profile est lu par le shell de connexion (ksh pour vous). Vous pouvez demander à ce shell de connexion de se remplacer par bash. Vous devez prendre quelques précautions :

  • Ne remplacez le shell de connexion que s'il est interactif. Ceci est important :sinon, la connexion en mode graphique peut ne pas fonctionner (cela dépend du système :certains systèmes, mais pas tous, lisent ~/.profile lors de la connexion via xdm ou similaire), et des idiomes tels que ssh foo '. ~/.profile; mycommand' échouera.
  • Vérifiez que bash est disponible, afin que vous puissiez toujours vous connecter si l'exécutable n'est pas là pour une raison quelconque.

Vous avez le choix d'exécuter bash en tant que shell de connexion ou non. La seule différence majeure pour en faire un shell de connexion est qu'il chargera ~/.bash_profile ou ~/.profile . Donc, si vous exécutez bash en tant que shell de connexion, faites très attention à avoir un ~/.bash_profile ou veillez à ne pas exécuter bash de manière récursive depuis ~/.profile . Il n'y a pas vraiment d'avantage à avoir ~/.profile exécuté par bash plutôt que par ksh, je vous recommande donc de ne pas le faire.

Définissez également le SHELL variable d'environnement à bash, afin que des programmes tels que des émulateurs de terminaux invoquent ce shell.

Voici le code pour passer à bash. Mettez-le à la fin de ~/.profile .

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

Linux
  1. Comment changer le shell Cron (sh en bash) ?

  2. Conseils sur le shell Unix :modifier le shell de connexion de Bash à d'autres

  3. CentOS / RHEL :Comment changer le shell de connexion de l'utilisateur

  4. Comment puis-je trouver la version de Fedora que j'utilise ?

  5. Comment utiliser les commandes watch et jobs ensemble dans Bash ?

Comment utiliser la commande Linux cd pour changer de répertoire

Comment changer la police du shell GNOME

Comment utiliser la commande Declare dans Linux Bash Shell

Comment changer le shell par défaut dans le système Linux

Comment utiliser Linux Bash Shell dans Windows 10 ?

Android - Comment puis-je utiliser les commandes shell et interagir avec le système Linux en dessous ?