Si configura o exporta una variable de entorno en bash, puede desactivarla . Si establece un alias en bash, puede desanudarlo . Pero no parece haber una falla .
Considere esta función bash (trivial), por ejemplo, establecida en un archivo .bash_aliases y leída en la inicialización del shell.
function foo () { echo "bar" ; }
¿Cómo puedo borrar esta definición de función de mi shell actual?
(Cambiar los archivos de inicialización o reiniciar el shell no cuenta).
linux
command-line
bash
shell
quijote curandero
fuente
fuente
unfunction
sería un buen nombre para un comando :-)Respuestas:
El comando incorporado no configurado toma una opción
-f
, para eliminar funciones:Formar el desarmado entrada en la fiesta de página de manual:
Nota:
-f
solo es realmente necesario si existe una variable con el mismo nombre. Si no tiene una variable denominadafoo
,unset foo
eliminará la función.fuente
-f
parámetro en la exportación pero no lo encontré sin configurar . Gracias.unset
no es un comando externo, es parte del shell ( bash en este caso); intenteman bash
y encuentre la entrada paraunset
(la gestión es bastante grande,unset
está debajo de laShell Builtin Commands
sección).Ver
help unset
:No hay
unset --help
niman unset
desafortunadamente.fuente
man unset
porque es un built-in de comandos y para el incorporado en los comandos que hay lugarhelp
. Para algunos comandos integrados también existe un ejecutable externo. En caso de duda intente, por ejemplotype mycommnad
. Por ejemplotype unset
y te responderáunset is a shell builtin
. Si desea saber si existe el ejecutable, intentewhich echo
(otro buikt-in) y le dirá dónde está. El--option_long
es típico del comando ejecutable. Pruebeecho --help
y/bin/echo --help
.:-)
.help
lugar deman
. (No es realmente cierto porque los encuentraman bash
en el capítulo SHELL BUILTIN COMMANDS o directamente conman BASH-BUILTINS
...). Es acogedor que bajo un shell bash simplemente puede pedirhelp
y recibirá la lista de comandos incorporados:-)
. (Pruebahelp help
yman man
también).Hace poco quería desinstalarlo
nvm
y reinstalarlo por completo , y deshacerme de cualquiera de sus entornos. Resulta que deshacerse de él no parece ser porque grannvm
parte se implementa en parte como una gran cantidad de funciones de shell que se obtienen en su shell a través de.bash_profile
o.bashrc
, o donde haya agregado los comandos de abastecimiento que le indicó cuando lo instaló por primera vez.Desconcertado al principio al
which nvm
no devolver nada pero claramente elnvm
comando y otros aún se encontraban, finalmente descubrí a través dedeclare -F
que se trata de un montón de funciones de shell. No quería simplemente matar el shell e iniciar uno nuevo (por razones no relevantes aquí), así que borré lasnvm
funciones de ese shell con esto:Algunas variaciones al respecto pueden ser útiles para alguien que, por cualquier razón, quiere hacer algo similar y no puede reiniciar un nuevo shell o no quiere hacerlo.
fuente