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.