sh, Bourne kabuğu veya / bin / sh anlamına gelebilir, bu da çoğu modern platformda başka (POSIX uyumlu) bir kabuktur. "POSIX kabuğu", POSIX modunda bash tarafından uygulanan POSIX tarafından tanımlanan soyut kabuk veya varsayılan olarak ksh veya kısa çizgidir. / bin / sh bazen POSIX kabuğu olarak da bilinir, çünkü çoğu platformda POSIX'e uygun bir kabuktur. Orijinal Bourne kabukları POSIX kabukları değildir.
bashref, bash ve Bourne kabukları arasındaki farkların bir listesine sahiptir . bash POSIX modunda çağrıldığında değişikliklerinman bash
bir listesi vardır .
/ bin / sh, OS X'te bir sembolik bağlantı veya sabit bağlantı değildir, ancak neredeyse / bin / bash ile aynı boyuttadır:
$ ls -li /bin/{ba,}sh
29631757 -r-xr-xr-x 1 root wheel 1333920 Jul 26 01:52 /bin/bash
29631758 -r-xr-xr-x 1 root wheel 1334000 Jul 26 01:52 /bin/sh
erkek bash :
Sh adıyla bash çağrılırsa, sh'ın tarihsel sürümlerinin başlangıç davranışını mümkün olduğunca yakından taklit etmeye çalışır ve POSIX standardına da uyar.
Bourne mermilerini taklit etmek bayağı sınırlı. bash +B
(Bourne), küme ayracı genişlemesi gibi özellikleri aslında devre dışı bırakır.
$ sh
$ echo {a,b}
a b
$ echo $BASH_VERSION
3.2.48(1)-release
$ bash +B
$ echo {a,b}
{a,b}
Ancak POSIX modunu devre dışı bıraksanız bile, yankı echo -e
varsayılan olarak şöyle davranır :
$ sh
$ shopt -uo posix
$ echo '1\b2'
2
/ bin / sh, Ubuntu'da tiredir , bu nedenle bazı temel bilgiler OS X'te / bin / sh ile çalışır ancak Ubuntu'da çalışmaz.
Eğer orijinal Bourne mermileri için aslında senaryo yazmak istiyorsan #!/usr/bin/env bash +B
bunun yerine kullanabilirsin .
POSIX özelliklerinin veya Bourne mermilerinin bir parçası olmayan özelliklerden kaçınmaktan veya diğer mermilerle her şeyi test etmekten daha bash için komut dosyaları yazmak daha kolay.
sh
ve değilbash
): http://en.wikipedia.org/wiki/Comparison_of_command_shells