Как отключить все функции в zsh?

ln source target 2>/dev/null || ln -s source target 2>/dev/null || exit 1

или, чуть более «интерактивно» (болтовня ),

if ! ln source target 2>/dev/null; then
    echo 'failed to create hard link, trying symbolic link instead' >&2
    if ! ln -s source target 2>/dev/null; then
        echo 'that failed too, bailing out' >&2
        exit 1
    fi
fi

Удалите перенаправления на /dev/null, чтобы увидеть сообщения об ошибках, отображаемые ln(, если таковые имеются ).

2
09.03.2020, 14:18
2 ответа

В оболочке zshвы можете отключить все функции, используя

disable -f -m '*'

(буквально «отключить каждую функцию, имя которой соответствует *» ).

Затем вы можете снова включить их с помощью аналогичного вызова enable.

Вы также можете использовать unsetаналогичным образом, чтобы полностью удалить функции из текущей среды:

unset -f -m '*'
5
28.04.2021, 23:21

Ассоциативный массивfunctionsсодержит все определенные функции (, включая автозагрузочные заглушки ), поэтому${(k)functions}расширяется до списка имен определенных функций.

unset -f ${(k)functions}
4
28.04.2021, 23:21

Теги

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