18

Если вы установите или экспортируете переменную окружения в bash, вы можете отменить ее. Если вы установите псевдоним в bash, вы можете удалить его. Но, кажется, не работает.

Рассмотрим эту (тривиальную) функцию bash, например, установите в файле .bash_aliases и прочитайте при инициализации оболочки.

function foo () { echo "bar" ; }

Как я могу удалить это определение функции из моей текущей оболочки?
(Изменение файлов инициализации или перезапуск оболочки не учитываются.)

2 ответа2

31

Встроенная команда unset принимает опцию -f для удаления функций:

unset -f foo

Сформируйте неустановленную запись на странице руководства bash :

Если указан -f, каждое имя относится к функции оболочки, и определение функции удаляется.

Примечание: -f действительно необходим, только если существует переменная с тем же именем. Если у вас также нет переменной с именем foo , то unset foo удалит функцию.

3

См help unset

unset: unset [-f] [-v] [-n] [name ...]

Unset values and attributes of shell variables and functions.

For each NAME, remove the corresponding variable or function.

Options:
  -f    treat each NAME as a shell function
  -v    treat each NAME as a shell variable
  -n    treat each NAME as a name reference and unset the variable itself
    rather than the variable it references

Without options, unset first tries to unset a variable, and if that fails,
tries to unset a function.

Some variables cannot be unset; also see `readonly'.

Exit Status:
Returns success unless an invalid option is given or a NAME is read-only.

К сожалению, нет ни unset --help ни спасенного man unset .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .