Если вы установите или экспортируете переменную окружения в bash, вы можете отменить ее. Если вы установите псевдоним в bash, вы можете удалить его. Но, кажется, не работает .
Рассмотрим эту (тривиальную) функцию bash, например, установите в файле .bash_aliases и прочитайте при инициализации оболочки.
function foo () { echo "bar" ; }
Как я могу удалить это определение функции из моей текущей оболочки?
(Изменение файлов инициализации или перезапуск оболочки не учитываются.)
linux
command-line
bash
shell
шарлатан
источник
источник
unfunction
было бы хорошим названием для команды :-)Ответы:
Снято с охраной встроенной команды принимает параметр,
-f
для функции удаления:Сформируйте неустановленную запись в man-странице bash :
Примечание:
-f
действительно необходимо, только если существует переменная с тем же именем. Если у вас также нет переменной с именемfoo
, тоunset foo
удалит функцию.источник
-f
параметр в экспорте, но не нашел его в неустановленном состоянии . Благодарю.unset
это не внешняя команда, это часть оболочки ( в данном случае bash ); попробуйтеman bash
найти запись дляunset
(управление довольно большое,unset
находится вShell Builtin Commands
разделе).Смотрите
help unset
:Там нет
unset --help
ни,man unset
к сожалению.источник
man unset
потому, что это встроенная команда, а для встроенных командhelp
. Для некоторых встроенных команд также существует внешний исполняемый файл. В случае сомнений попробуйте напримерtype mycommnad
. Напримерtype unset
и вам ответятunset is a shell builtin
. Если вы хотите узнать, существует ли исполняемый файл, попробуйтеwhich echo
(еще один вход), и он скажет, где он находится.--option_long
Типичен исполняемой команды. Попробуйтеecho --help
и/bin/echo --help
.:-)
,help
вместоman
. (Не совсем так, потому что вы найдете их вman bash
главе КОМАНДЫ ОБЪЕКТА ОБОЛОЧКИ или непосредственно с помощьюman BASH-BUILTINS
...). Удобно, что под оболочкой bash вы можете просто запросить,help
и вы получите список встроенных команд:-)
. (Попробуйhelp help
иman man
тоже).Недавно я хотел полностью удалить
nvm
и переустановить его, а также избавиться от любой из его сред. Оказывается, избавиться от него, похоже, не потому, что большая частьnvm
его частично реализована в виде множества функций оболочки, которые поступают в вашу оболочку через.bash_profile
или.bashrc
, или куда бы вы ни добавляли те команды извлечения, о которых вам было сказано при первой установке.Сначала озадаченный тем, что
which nvm
ничего не возвратил, ноnvm
команда все еще находилась, я обнаружил,declare -F
что это набор функций оболочки. Я не хотел просто убивать оболочку и запускать новую (по причинам, не относящимся к делу), поэтому я удалилnvm
функции из этой оболочки следующим образом:Некоторые варианты могут быть полезны для тех, кто по какой-либо причине хочет сделать что-то подобное и не может перезапустить новую оболочку или не хочет.
источник