Como faço para desfazer ou me livrar de uma função bash?

17

Se você definir ou exportar uma variável de ambiente no bash, será possível remover a definição . Se você definir um alias no bash, poderá unalias . Mas não parece haver um desvio .

Considere esta função (trivial) bash, por exemplo, definida em um arquivo .bash_aliases e lida na inicialização do shell.

function foo () { echo "bar" ; }

Como posso limpar esta definição de função do meu shell atual?
(Alterar os arquivos de inicialização ou reiniciar o shell não conta.)

    
por quack quixote 19.06.2010 / 05:16

2 respostas

28

O comando interno unset usa uma opção, -f , para excluir funções:

unset -f foo

Forme a entrada unset no bash manpage:

If -f is specified, each name refers to a shell function, and the function definition is removed.

Nota: -f só é realmente necessário se existir uma variável com o mesmo nome. Se você também não tiver uma variável chamada foo , então unset foo excluirá a função.

    
por 19.06.2010 / 05:44
2

Veja 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.

Não há unset --help nem man unset infelizmente.

    
por 05.03.2017 / 22:30