/ / ¿Cómo mantengo las funciones / variables locales en mi zshrc? - zsh, zshrc

¿Cómo mantengo las funciones / variables locales en mi zshrc? - zsh, zshrc

Cualquier variable que declaro en mi zshrc está disponible en el shell como una variable de entorno. No quiero que esto suceda.

Traté de poner las variables en una función y configurarlas como locales, pero luego la función está disponible fuera del zshrc.

¿Cómo puedo hacerlo tan lo que sucede en mi zshrc se queda en mi zshrc?

Respuestas

16 para la respuesta № 1

Están disponibles, pero no se exportan, por lo que los scripts que se inician desde la línea de comandos no obtienen estas variables. Si tu .zshrc parece

function zshrc()
{
local VAR=1
# Do stuff
}
zshrc

y luego nunca quieres lanzar zshrc funcionar de nuevo, puedes hacer

unfunction zshrc

después.


28 para la respuesta № 2

Si está usando una versión reciente de zsh, puede usar una función anónima:

function () {
local xyz=abc
# whatever
}

La función se ejecutará automáticamente y luego se descartará, solo existe para propósitos de alcance.

Esto funciona para cualquier archivo de origen, no solo zshrc.


5 para la respuesta № 3

Si no agrega la palabra local a una variable, permanecerá hasta que realice una de las siguientes acciones:

  1. Abra una nueva ventana de terminal.
  2. correr exec zsh o exec bash dependiendo de tu caparazón. Esto simplemente borra las variables locales que no fueron asignadas con la palabra local.

Evita esto

method_name(){
a=11
echo $a
}

Ejemplo correcto

method_name(){
local a=11
echo $a
}

Esta variable tiene el alcance del nombre de la función method_name y solo está disponible dentro de la función cuando se llama (y no después).

Si desea acceso directo a esa variable local, puede configurarlo de esta manera

local z=11

Y llámalo de esta manera

echo $z

Dependiendo de su caparazón y necesidades, puede usar .bash_profile o .bashrc o .zshrc etc. para almacenar funciones y alias.

Vea esta referencia para más información sobre las variables de entorno y sus respectivas capas

Lea también esto para comprender cómo establecer las variables de entorno en la línea de comandos utilizando expansiones de shell

Puede ver rápidamente las variables de entorno con env o printenv

La convención es usar UPPERCASE

Para establecer temporalmente una variable de entorno (almacenada hasta que cierre el terminal)

export A=11 o export B="11 is part of this string"

Suponiendo que haya abierto una nueva ventana de terminal osourcing .zshrc o .bashrc o lo que sea que esté usando ahora puede usar esta variable de entorno hasta que cierre su sesión de terminal. Nota: no use $ cuando configure, pero use $ cuando haga referencia a la variable.

Ejemplos

echo "A is equal to: $A and that is pretty nice"

echo "$A"

Cómo obtener un archivo

source ~/path/to/file/filename

Ejemplo

source ~/.bash_profile

Para establecer una variable de entorno (hasta que la elimine o la configure de nuevo)

Use el código anterior pero colóquelo en su ~ / .bash_profile o ~ / .zshrc u otro archivo respectivo. Guarde el archivo y fuente.

Ejemplo

export B="11 is part of this string"

Ahora puedes verlo con

env

Para eliminar esa variable de entorno, elimínela del archivo y vuelva a generar el archivo.

Para eliminar temporalmente una variable de entorno, use unset

Ejemplo

unset B

Tenga en cuenta que no hay $ cuando desarma

Para establecer variables de entorno desde la línea de comando

export BLABLA="environment variable set from the command line, saved in file for later use"

Verifique el archivo al que lo está enviando, puede que no comience en una nueva línea, podría haber sido concatenado a su última línea, que era alguna otra función, alias u otro.

Esta no es una respuesta completa, pero es un gran paso en la dirección correcta. Muestra cómo se puede establecer, utilizar y eliminar el alcance en un shell de terminal.