Tengo varias cuentas de Amazon EC2 y quiero poder cambiar rápidamente las variables, como el $EC2_HOME
uso de un script.
Tengo un script de shell configurado así:
#!/bin/sh
export EC2_HOME=/home/me/.ec2
echo $EC2_HOME
Cuando ejecuto el script, sé que EC2_HOME
está configurado, pero pensé que usarlo export
haría que la variable se quedara después de que se completara el script. No lo hace, ya que correr echo $EC_HOME
no muestra nada.
Sé que esto debe ser un conocimiento de scripts de Linux muy rudimentario, pero no lo sé. Intenté buscar preguntas relacionadas sin suerte, así que disculpen si esto es un duplicado.
.
osource
, no está generando un nuevo proceso hijo, está ejecutando los comandos en el shell actual..
osource
. Por qué está pasando esto ?exit
declaración, por lo que no es adecuado para su fuente.source ./script
funciona completamente bien,sudo source ./script.sh
dicesudo: source: command not found
. ¿Cómo puedo hacer esto usando sudo?sudo
y de los ajustes de configuración/etc/sudoers
, puede o no preservar su entorno al ejecutar comandos consudo
. Le sugiero que intente obtener su script y luego ejecutarsudo
con la-E
opción para preservar el entorno. Si no funciona, supongo que hay muy poco que puedas hacer.Cuando ejecuta un script, obtiene su propio shell y su propio entorno, que desaparecen nuevamente tan pronto como finaliza el script. Para mantener las variables de entorno, cree el script en su shell actual:
o de manera equivalente (pero un poco más portátil) use el comando de punto POSIX :
Luego, las definiciones se colocarán en el entorno de su shell actual y serán heredadas por cualquier programa que inicie desde él.
Para estar más cerca de ejecutar un script,
. a.sh
encontrará a.sh buscando en los directorios de laPATH
variable de entorno.Hay algunas sutilezas en cómo éstas se comportan, y si
.
ysource
son los mismos (o presente en todos).. ./a.sh
definitivamente se comportará igual en todos los shell compatibles con POSIX, perosource
y.
, y. a.sh
y. ./a.sh
, pueden variar. Para Bashsource
y.
son los mismos en todos los casos; para zshsource
siempre verifica primero el directorio actual ; ksh es esencialmente similar.Si el nombre del script se proporciona como una ruta (que contiene a
/
), esa ruta se usa directamente en todos los casos. La cosa más confiable y portátil que se puede hacer es. ./script
o. /path/to/script
.fuente
Solo para el registro.
Si desea ejecutar un script desde internet que exporta env al sistema
puedes usar el siguiente formato
Por ejemplo:
fuente