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
(, если таковые имеются ).
В оболочке zsh
вы можете отключить все функции, используя
disable -f -m '*'
(буквально «отключить каждую функцию, имя которой соответствует *
» ).
Затем вы можете снова включить их с помощью аналогичного вызова enable
.
Вы также можете использовать unset
аналогичным образом, чтобы полностью удалить функции из текущей среды:
unset -f -m '*'
Ассоциативный массивfunctions
содержит все определенные функции (, включая автозагрузочные заглушки ), поэтому${(k)functions}
расширяется до списка имен определенных функций.
unset -f ${(k)functions}