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:~$

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."


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.