Можно ли узнать, получена ли наша команда из сценария или введена вручную в командной строке?

Все системные вызовы, которые появляются над вызовом close (3) , происходят из-за загрузки динамической библиотеки. Похоже, он также проверяет любые кешированные динамически подключаемые библиотеки.

Системные вызовы для фактического удаления файла начинаются с вызова newfstatat () и включают 4 других системных вызова. 3 вызова close () и exit_group () - это среда выполнения C, выполняющая очистку после функции main () для rm возвращается или выходит.

Немного отредактируем, это то, что заставляет людей желать статически связанных исполняемых файлов и пробовать различные вещи, такие как sta.li или Morpheus .

1
03.05.2018, 09:29
1 ответ

В bashскриптах я обычно делаю так:

#!/bin/bash

if test "$0" != "$BASH_SOURCE"; then
    SOURCED=1
    MY_NAME=$BASH_SOURCE
else
    SOURCED=0
    MY_NAME=$0
fi

# do something here

if test "$SOURCED" = "1"; then
    # use return instead of exit
    return
fi

# do something here only when not sourced
exit
0
28.01.2020, 00:36

Теги

Похожие вопросы