ldd
хорошее начало. Затем Вы могли прокрутить двоичный файл strace -fo /tmp/strace.log
, и взгляните там, для какого приложение пытается найти.
Запустите с a grep
из ENOENT
видеть то, что это не находит.
Можно также взглянуть на документацию, поставленную с тем приложением и возможно его синхронными журналами если таковые имеются.
Выполнение его с помощью [112869]strace[112870]:
Взглянув внутрь файла [112871]strace.log[112872], мы видим следующее.
Как только файл прочитан, он выполняется:
В вышеприведенном примере мы ясно видим, что весь сценарий считывается как единая сущность, а затем выполняется там же. Поэтому [112873] "появляется"[112874], по крайней мере, в случае Бэша, когда он считывает файл, а затем выполняет его. Значит, вы думаете, что сможете редактировать скрипт во время его выполнения?
ПРИМЕЧАНИЕ:[112876] Не надо! Читайте дальше, чтобы понять, почему вы не должны связываться с запущенным файлом скрипта.
А как насчёт других интерпретаторов?
Так почему мы не можем отредактировать файл?
Скажем, мы создадим следующий скрипт оболочки.
Результат в этом файле:
Который содержит следующий тип содержимого:[12169]Теперь, когда вы запустите его, используя ту же самую технику, описанную выше, с [112881]строчкой[112882]:[12170]Вы заметите, что файл считывается с шагом 8 КБ, поэтому Bash и другие оболочки, скорее всего, не будут загружать файл целиком, а будут читать его блоками. [12171]Ссылки[12172]The #! magic, подробности о механизме shebang/hash-bang на различных Unix вкусах[12173]