Mal wieder Zeit verplempert: Wenn man Shell-Scripts programmiert sollte man wissen welchen Interpreter man verwendet. Etwas achtlos verwendet man meist den Shebang “#!/bin/sh”. /bin/sh ist meist nur ein Link auf die jeweilige Default-Shell der Distribution.
Unter Centos/RedHat ist /bin/sh ein Link auf /bin/bash (die Bourne-Again-Shell):
[root@centos ~]# ls -la /bin/sh
lrwxrwxrwx 1 root root 4 Apr 28 2010 /bin/sh -> bash
Unter Ubuntu/Debian hingegen verlinkt /bin/sh auf /bin/dash (Debian-Almquist-Shell).
root@debian:~# ls -la /bin/sh
lrwxrwxrwx 1 root root 4 2010-11-02 16:47 /bin/sh -> dash
Aufgefallen ist mir der Unterschied beim Verwenden der Bash-Variable $UID. Die dash enthält diese Variable nämlich nicht. Weitere Unterschiede sind mir bisher nicht bekannt (habe aber auch nicht danach gesucht).
2 replies on “Ubuntu/Centos: /bin/sh Unterschiede”
[…] erwähnt: Hier findet sich der Grund warum der angepasste Wrapper für FastCGI unter Ubuntu zunächst nicht […]
*grins* Eigentlich muss eine /bin/sh absolut identisch zur POSIX shell sein, und ggf. auch alle erweiterten Funktionen deaktivieren, wenn sie als “sh” aufgerufen wird. Linux ist leider nicht POSIX- oder SUS oder sonstirgendwas kompatibel, und die LSB definiert ja lieber Dinge wie Drucker ;)