Mọi chương trình đều có thể thấy dòng lệnh đầy đủ đã được sử dụng để chạy nó (ngoại trừ các ký tự đại diện và các biến, mà shell mở rộng).
Trong một chương trình C, dòng lệnh được lưu trữ argv
, viết tắt của vectơ đối số .
Tên của progam là yếu tố đầu tiên của argv
, tức là argv[0]
.
Rõ ràng trong trường hợp halt
và reboot
, chương trình đang thay đổi hành vi của nó dựa trên argv[0]
.
Từ bash, bạn có thể thấy dòng lệnh đầy đủ được sử dụng để chạy chương trình bằng cách sử dụng ps -p <pid> -o cmd
hoặc cat /proc/<pid>/cmdline
.
Lưu ý rằng có một loại liên kết khác gọi là liên kết cứng sẽ có tác dụng tương tự. Trên hệ thống của tôi chẳng hạn, sudo
và sudoedit
là cùng một tệp có hai tên khác nhau và các hành vi khác nhau.
ls -i
có thể giúp bạn tìm các lệnh đó, vd:
$ 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
Xem man ln
để biết thêm chi tiết về các liên kết cứng nếu bạn không quen thuộc với chúng.