Categories
Linux

Ubuntu/Centos: /bin/sh Unterschiede

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”

*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 ;)

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.