El script bash simple no funciona

El script bash simple no funciona

Soy bastante nuevo en las secuencias de comandos bash. Estoy intentando crear un script para exportar las variables http_proxy. Esto es lo que hago desde la terminal:

$export http_proxy=http://proxy21.iitd.ernet.in:3128/
$export https_proxy=https://proxy21.iitd.ernet.in:3128/

Esto funciona bien. Ahora, aquí está mi script (llamado setproxy):

#!/usr/bin/env bash
if [ $1 -eq 22 ]
then
    export http_proxy=http://proxy22.iitd.ernet.in:3128/
    export https_proxy=https://proxy22.iitd.ernet.in:3128/
elif [ $1 -eq 21 ]
then
    export http_proxy=http://proxy21.iitd.ernet.in:3128/
    export https_proxy=https://proxy21.iitd.ernet.in:3128/
elif [ $1 -eq 61 ]
then
    export http_proxy=http://proxy61.iitd.ernet.in:3128/
    export https_proxy=https://proxy61.iitd.ernet.in:3128/
elif [ $1 -eq 62 ]
then
    export http_proxy=http://proxy62.iitd.ernet.in:3128/
    export https_proxy=https://proxy62.iitd.ernet.in:3128/
fi

Básicamente, quiero configurar el servidor proxy apropiado según la entrada. Lo puse en la carpeta bin, lo hice ejecutable, agregué bin a la ruta, inicié y cerré sesión. El terminal acepta setproxy como un comando válido (al menos no hay ningún error de comando no encontrado) Pero, cuando lo hago:

$setproxy 22

No hay ningún efecto. El proxy permanece sin cambios. ¿Qué estoy haciendo mal?

Respuesta1

Cuando llama al script, se invoca un nuevo shell secundario para ejecutarlo. Sus servidores proxy están configurados, pero el proxy del proceso principal (su shell) no se puede cambiar desde un proceso secundario. Intentarabastecimientoel guión, es decir, llámalo como

. setproxy 21

Luego, el script será interpretado por su shell actual.

información relacionada