Il existe plusieurs programmes qui implémentent le langage de /bin/sh. Sur Ubuntu, /bin/shest dash, qui est conçu pour être rapide, pour utiliser une petite quantité de mémoire, et ne prend pas en charge beaucoup plus que le minimum attendu de /bin/sh. Sur RHEL, /bin/shest bash, qui est plus lent et utilise plus de mémoire mais a plus de fonctionnalités. L'une de ces fonctionnalités est l' ==opérateur de la [syntaxe conditionnelle. Dash prend en charge [, qui est une fonctionnalité sh de base, mais il n'a pas l' ==opérateur qui est une extension bash (et ksh et zsh).
Vous pouvez passer votre système en utilisant bash. Sur Ubuntu, /bin/shest un lien symbolique vers dash. Vous pouvez en faire un lien symbolique à la bashplace. Les versions actuelles de Debian et Ubuntu (et dérivés) en font une option d'installation de dash. Pour le changer, exécutez
sudo dpkg-reconfigure dash
et répondez «oui» pour conserver le tiret comme /bin/shou «non» pour passer à bash.
Vous pouvez garder bash as /bin/sh, mais cela rendra votre système un peu plus lent. Il est même concevable que certains scripts système soient incompatibles avec bash, bien que cela soit peu probable car bash est principalement un surensemble de tirets.
Pour les distributions qui n'ont pas d'interface pour choisir entre les implémentations de /bin/sh, voici comment passer à bash.
sudo ln -s bash /bin/sh.bash
sudo mv /bin/sh.bash /bin/sh
Gardez un terminal ouvert et vérifiez que vous pouvez toujours exécuter certains shscripts après cela. Si vous gâchez cette commande, cela rendra votre système inutilisable. (Soit dit en passant, la raison pour laquelle j'ai utilisé les multiples commandes ci-dessus plutôt que l'aspect simple sudo ln -sf bash /bin/shest qu'il ln -sfn'est pas atomique. Dans le cas, il est peu probable, que votre ordinateur s'est écrasé pendant cette opération, vous devez démarrer à partir d'un support de secours pour le restaurer. En revanche, mvest atomique.)
Pour restaurer le tableau de bord en tant que /bin/sh:
sudo ln -s dash /bin/sh.dash
sudo mv /bin/sh.dash /bin/sh
Notez que si sh est /bin/bashpar défaut sur votre distribution, le passage à dash peut entraîner l'échec des scripts, car bash a beaucoup plus de fonctionnalités que dash. Les scripts Bash doivent commencer par #!/bin/bash, et les scripts commençant par #!/bin/shne doivent pas utiliser de fonctionnalités spécifiques à bash, mais les distributions livrées avec bash /bin/shpeuvent utiliser des fonctionnalités spécifiques à bash dans des #!/bin/shscripts spécifiques à cette distribution (c'est correct tant qu'il n'y a aucune attente que les utilisateurs peut passer au tiret au fur /bin/shet à mesure et il n'y a aucune attente que ces scripts fonctionnent sur une autre distribution).
==qui devrait être=. Cela, et que les extensions de variable doivent être entre guillemets.