Symlink to bash startet eine andere Shell

2

In der folgenden Bash-Sitzung habe ich / bin / sh mit / bin / bash verknüpft. Wenn ich jedoch / bin / sh ausführe, ist das Ergebnis nicht dasselbe wie /bin/bash...jede Idee, was dort passiert?

benno@benno-laptop:~$ ls -l /bin/sh
lrwxrwxrwx 1 root root 9 2009-08-28 19:56 /bin/sh -> /bin/bash
benno@benno-laptop:~$ /bin/sh
sh-3.2$ exit
exit
benno@benno-laptop:~$ /bin/bash
benno@benno-laptop:~$ exit
exit
benno@benno-laptop:~$
Benno
quelle

Antworten:

6

Von Hier : "Wenn Bash mit dem Namen sh aufgerufen wird, versucht es, das Startverhalten historischer Versionen von sh so genau wie möglich zu imitieren, wobei es auch dem posix-Standard entspricht."

moonshadow
quelle
1
Diese Art von Aufrufnamen-Polymorphismus ist ein seltener, aber geschätzter Teil der Unix-Programmierkunde. Sobald Sie über den gelegentlichen Gebrauch hinausgehen, sollten Sie davon Abstand nehmen. Ein weiterer häufiger Ort, um es zu sehen, ist in der grep, egrep, fgrep Familie.
dmckee
1
Busybox ( busybox.net ) nimmt dieses Paradigma so weit wie es geht :)
moonshadow