Я хочу сказать, что я хочу использовать unset, который не является самой функцией оболочки. Если бы я мог это сделать, я мог бы убедиться, что command чист, запустив
#!/bin/sh
{ \unset -f unalias command [; \unalias unset command [ } 2>/dev/null;
# make zsh find *builtins* with `command` too:
[ -n "$ZSH_VERSION" ] && options[POSIX_BUILTINS]=on
Если я использую Debian Almquist shell (тире), я думаю, что могу полагаться, что \unset является чистым. По крайней мере, я не мог определить функцию оболочки с именем unset в dash. Если в bash или в zsh я мог бы определить unset() { echo fake unset; }, и после этого я не могу отключить функцию: \unset -f unset выводит "fake unset".
Относительно этого в bash script можно экспортировать функцию export -f <function name>, чтобы ее можно было использовать в сценариях bash, вызываемых script. Однако то же самое не работает в сценариях dash. Интересно, если мне приходится беспокоиться о том, что команда определяется как функция оболочки вне файла script, который я пишу, если я использую dash? Как насчет других совместимых с POSIX оболочек?
