Jedes Programm kann die vollständige Befehlszeile sehen, mit der es ausgeführt wurde (mit Ausnahme von Platzhaltern und Variablen, die die Shell erweitert).
In einem C-Programm wird die Befehlszeile gespeichert argv
, die für Argumentvektor steht .
Der Name des Programms ist das erste Element von argv
, dh argv[0]
.
Im Fall von halt
und reboot
ändert das Programm eindeutig sein Verhalten basierend auf argv[0]
.
In Bash sehen Sie die vollständige Befehlszeile, mit der ein Programm mit ps -p <pid> -o cmd
oder ausgeführt wird cat /proc/<pid>/cmdline
.
Beachten Sie, dass es einen anderen Verbindungstyp gibt, der als fester Link bezeichnet wird und den gleichen Effekt hat. Auf meinem System zum Beispiel sudo
und sudoedit
sind die gleiche Datei mit zwei verschiedenen Namen und unterschiedlichen Verhaltensweisen.
ls -i
kann Ihnen helfen, diese Befehle zu finden, z.
$ ls -il | awk '$3 != 1 { print }'
total 156872
2491111 -rwsr-xr-x 2 root root 127560 2011-01-20 05:03 sudo
2491111 -rwsr-xr-x 2 root root 127560 2011-01-20 05:03 sudoedit
Sehen Sie man ln
für weitere Informationen über Hard - Links , wenn Sie nicht mit ihnen vertraut sind.
busybox
. Symlinks sind nur die erste Möglichkeit, das 0. Argument für eine Anwendung zu definieren. Ein einfaches Umbenennen einer Datei würde ebenfalls ausreichen.