Está en la página 1de 14

1/11/2020 Declaración de Variables y Alcance en Bash Shell en Curso de Programación en Bash Shell

1 Variables de entorno
Ayudan a obtener infromacion del sistema, almacenar informacion temporal y modificar su
informacion. Existen 2 tipos:
Variables Globales: Son visibles desde el shell que lo creo o desde cuaquier hijo de esa shell.
Variables Locales: Son visibles solo desde el shell que la creo.
Variable Persistente: Para crear una de estas es necesario introducirla en el archivo /etc/profile
pero en el caso de los derivados debian si revisamos un poco el script nos damos cuenta que
llama a otro archivo llamado /etc/bash.bashrc en el cual podemos crear las variables de entorno
persistentes.
Por eso no funciona llamar la variable declarada en /etc/profile desde un shell
2 Variables de usuario
Son las variables que se corren dentro de un script como en cualquier programa de computadora
C, C++ o Java
Variable global: Se puede usar desde otro script siempre y cuando sea llamado desde el script
que contiene la variable.
-Variable local:_ Solo tiene alcance en el script que la creo.

Fredy Mendoza Vargas · hace 17 días


Gracias

Julio Cardenas Estudiante · hace 2 años

Para visualizar las variables de entorno se hace printenv

LC_MEASUREMENT=es_CO.UTF-8
SSH_CONNECTION=192.168.56.1 51806 192.168.56.101 22
LESSCLOSE=/usr/bin/lesspipe %s %s
LC_PAPER=es_CO.UTF-8
LC_MONETARY=es_CO.UTF-8
LANG=es_CO.UTF-8
LC_NAME=es_CO.UTF-8
XDG_SESSION_ID=5
USER=ubuntu
PWD=/home/ubuntu/shellCourse
HOME=/home/ubuntu
LC_CTYPE=en_US.UTF-8
SSH_CLIENT=192.168.56.1 51806 22
XDG_DATA_DIRS=/usr/local/share:/usr/share:/var/lib/snapd/desktop
LC_ADDRESS=es_CO.UTF-8
LC_NUMERIC=es_CO.UTF-8
SSH_TTY=/dev/pts/0
MAIL=/var/mail/ubuntu
TERM=xterm-256color
SHELL=/bin/bash
SHLVL=1
https://platzi.com/clases/1468-bash-shell/16549-declaracion-de-variables-y-alcance-en-bash-shell/ 1/14
1/11/2020 Declaración de Variables y Alcance en Bash Shell en Curso de Programación en Bash Shell

LANGUAGE=es_CO:es
LC_TELEPHONE=es_CO.UTF-8
LOGNAME=ubuntu
XDG_RUNTIME_DIR=/run/user/1000
PATH=/home/ubuntu/bin:/home/ubuntu/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbi
n:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
LC_IDENTIFICATION=es_CO.UTF-8
LESSOPEN=| /usr/bin/lesspipe %s
LC_TIME=es_CO.UTF-8
_=/usr/bin/printenv
OLDPWD=/home/ubuntu
ubuntu@uServer1:~/shellCourse$

Marco Antonio Toscano Freire · hace 2 años


Gracias por tu aporte Julio

DaRk452 · hace 2 años

También se puede utilizar el comando env:

[root@training ~]# env


HOSTNAME=training
TERM=xterm
SHELL=/bin/bash
HISTSIZE=10000
SSH_CLIENT=XXX.XXX.XXX.XXX 60301 22
SSH_TTY=/dev/pts/0
QT_GRAPHICSSYSTEM_CHECKED=1
USER=root
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01
:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:o
w=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.t
az=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=0
1;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=
01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.
tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=0
1;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:
*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif
=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;3
5:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*
.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv
=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01
;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.
flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;
35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.
ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=
https://platzi.com/clases/1468-bash-shell/16549-declaracion-de-variables-y-alcance-en-bash-shell/ 2/14
1/11/2020 Declaración de Variables y Alcance en Bash Shell en Curso de Programación en Bash Shell

01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:
*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:
SSH_AUTH_SOCK=/tmp/ssh-apI6iYfLbv/agent.3521
COBBLER_SERVER=XXXXXXXX
MAIL=/var/spool/mail/root
PATH=/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/opt/mssql-
tools/bin:/root/bin:/opt/mssql-tools/bin
PWD=/root
LANG=en_US.UTF-8
HISTCONTROL=ignoredups
SHLVL=1
HOME=/root
LOGNAME=root
SSH_CONNECTION=XXX.XXX.XXX.XXX 60301 XXX.XXX.XXX.XXX 22
LESSOPEN=||/usr/bin/lesspipe.sh %s
HISTTIMEFORMAT=%F %T %Z
_=/usr/bin/env

Ver más respuestas

Daniel Morales Estudiante · hace 5 meses

Vale aclarar, que al hacer chmod +x … se le da permiso de Ejecucion a TODOS los usuarios del
sistema… Si queremos ser mas cautos y solo darle ejecucion, recomendaría usar: chmod
u+x nombredelarchivo.sh
la difeencia es la ‘u’… se taduce a user + x (ejecucion)

Cristian Andrés Córdova Valencia Estudiante · hace 5 meses

Una buena práctica es declarar las variables en mayúsculas:


OPCION=0
NOMBRE=“Marco”

Danilo Josué Huacón Aguirre Estudiante · hace 8 meses

4:43 “Utilizamos el signo de sucre”. Hahaha muy buena profe. Como todo ecuatoriano del alma.

Emmanuel García Estudiante · hace 7 meses

https://platzi.com/clases/1468-bash-shell/16549-declaracion-de-variables-y-alcance-en-bash-shell/ 3/14
1/11/2020 Declaración de Variables y Alcance en Bash Shell en Curso de Programación en Bash Shell

Es horrible el azul que usa en la terminal, no puedo leer lo que escribe. No pongan esos colores y
eviten dañarse los ojos.

jose-noel-marenco Estudiante · hace 2 años

El video està caìdo.

mariandrea · hace 2 años


hola, gracias por reportarlo! ya lo encuentras disponible

JoanXD Estudiante · el año pasado

La verdad es que esta configuración para pasar los valores de las variables
de usuario entre disintos programas me parece super interesante y práctica.
Magnifica la sessión Marco Antonio. Un saludo.

Alfonso Adame Rueda Estudiante · hace 2 años

hola buenas tardes , para los que no tienen la iso de un ubuntu server la pueden descargar desde
el curso de administración de servidores linux

José Francisco Casales Huerta · hace 2 años


O las pueden descargar del siguiente enlace

José Francisco Casales Huerta · hace 2 años


https://www.ubuntu.com/download/server/thank-you?version=18.04.1&architecture=amd64

Ver más respuestas

https://platzi.com/clases/1468-bash-shell/16549-declaracion-de-variables-y-alcance-en-bash-shell/ 4/14
1/11/2020 Declaración de Variables y Alcance en Bash Shell en Curso de Programación en Bash Shell

Alfonso Adame Rueda Estudiante


· hace 2 años

hola buenas tardes quien me dice como pongo el auto completado ya edite mi archivo de vim.rc

Marco Antonio Toscano Freire · hace 2 años

Alfonso debes instalar el paquete sudo apt-get install bash-completion

cesarvillegas · hace 2 años


te recomiendo utilizar un gestor de plugins para vim, personalmente utilizo vundle
https://github.com/VundleVim/Vundle.vim

Ver más respuestas

Sol Naranjo Alarcon Estudiante · hace 2 años

Dice que el video no esta disponible…

mariandrea · hace 2 años

hola, gracias por tu reporte. Ya está disponible la clase

Sol Naranjo Alarcon · hace 2 años

Gracias!

Ver más respuestas

Junior Cupe Casquina Estudiante · hace 2 años

FIle 1

#!/usr/bin/env bash
# lec_2_file_a.sh file

https://platzi.com/clases/1468-bash-shell/16549-declaracion-de-variables-y-alcance-en-bash-shell/ 5/14
1/11/2020 Declaración de Variables y Alcance en Bash Shell en Curso de Programación en Bash Shell

# !/bin/bash it is shown in the course


# chmod +x name_file //to add execution permission
# cp file_name_original new_file_name //to copy a file

#To define variables


myOption=0
myName=Marco

# $variable to obtain the value of a variable


echo "Option: $myOption and Name:$myName"

#to export the variable to the so level


export myName

#call other script


./lec_2_file_b.sh

File 2

#!/usr/bin/env bash
# lec_2_file_a.sh file

# !/bin/bash it is shown in the course

#variable taken from the so level variables


echo "Field taken from the first script $myName"

Marco Antonio Toscano Freire · hace 2 años


Excelente trabajo

cesarvillegas Estudiante · hace 2 años

Si quieren declarar una variable de entorno o una variable en su shell bash la recomendación es
hacerlo siempre en mayúsculas.
VARIABLE=valor
Es importante no dejar espacios entre el nombre de la variable y su valor

EPadronU23 Estudiante · el año pasado

https://platzi.com/clases/1468-bash-shell/16549-declaracion-de-variables-y-alcance-en-bash-shell/ 6/14
1/11/2020 Declaración de Variables y Alcance en Bash Shell en Curso de Programación en Bash Shell

sudoedit es preferible sobre sudo [editor]. En particular porque con sudoedit, nuestro
archivo .*rc es usado, en lugar de aquel que pertenezca al usuario que estamos personificando
(usualmente es root).

Marco Antonio González Arellano Estudiante · hace 7 meses

Podemos hacer que se tome en cuanta la variable de entorno sin reiniciar el SO, con ayuda del
comando source.

Edwin De Jesus Chiyopa Garcia Estudiante · el año pasado

Muy interesante, no habia manejado los alcance de las variables

freddymm Estudiante · hace 10 meses

Con esta clase aclare una duda que tenía desde aproximadamente 4 meses que vi las clases de
introducción a la terminal.

Jose Alfredo Vallejos de la Sancha · hace 10 meses


excelente esta bueno el curso

Jose Alfredo Vallejos de la Sancha Estudiante · hace 10 meses

muy bueno estoy aprendiendo mucho es emocionate

Esneider Sanabria Estudiante · hace 2 años

buenas no me esta tomando la variable nombre y cuando la exporto no se resalta de color azul
https://platzi.com/clases/1468-bash-shell/16549-declaracion-de-variables-y-alcance-en-bash-shell/ 7/14
1/11/2020 Declaración de Variables y Alcance en Bash Shell en Curso de Programación en Bash Shell

DaRk452 · hace 2 años


No te resalta en el segundo script?
Por favor prueba los siguientes scripts, asegurate que sean ejecutables:

[root@training ~]# ls -l prueba*


-rwx------ 1 root root 62 Jan 30 00:11 prueba2.sh
-rwxrwxrwx 1 root root 100 Jan 30 00:11 prueba.sh

[root@training ~]# cat prueba.sh


#!/bin/bash

nombre="esto es una prueba"

echo "El nombre es: $nombre"

export nombre

./prueba2.sh

[root@training ~]# cat prueba2.sh


#!/bin/bash

echo "El nombre pasado por export es: $nombre"

Noldia Chavez Cavero Estudiante · hace 5 meses

https://platzi.com/clases/1468-bash-shell/16549-declaracion-de-variables-y-alcance-en-bash-shell/ 8/14
1/11/2020 Declaración de Variables y Alcance en Bash Shell en Curso de Programación en Bash Shell

josemdiaza Estudiante · el año pasado

Hay algo que no me queda claro con respecto a esta clase. Con este ejercicio que hemos
realizado, hemos conseguido imprimir el contenido del script2 en el script1con las variables del
mismo script1. Pero que pasaría si yo quisiera imprimir la variable del script1 en el script2??

https://platzi.com/clases/1468-bash-shell/16549-declaracion-de-variables-y-alcance-en-bash-shell/ 9/14
1/11/2020 Declaración de Variables y Alcance en Bash Shell en Curso de Programación en Bash Shell

GibsPM
· el año pasado

Colocar la orden export en el script2


y escribir dentro de script2 que script1 recibirá esa variable.

josemdiaza · el año pasado


@GibsPM sigue sin quedarme claro, podrías poner un ejemplo?

GibsPM · el año pasado

@josemdiaza ¿podrías explicar con más detalle tu duda? Esto para evitar darte un rollo que quizás no
te sirva 😃

freddymm · hace 10 meses


Las variables del script 1 solo estaran disponibles en el script 2 de la forma que mostro el profesor es
decir siguiendo estos pasos:
1)declarar la variable
2)exportar la variable
3)llamar al script que utilizara la variable
.
todo dentro del mismo script 1
.
Si quieres tener una variable disponible para todos los scripts sin realizar estos pasos tendrias que
declarar la variable y exportarla en el archivo /etc/profile es decir hacer una variable global

Ver más respuestas

Carlos Augusto Pérez Méndez Estudiante · el año pasado

Volví a editar el archivo en /etc/profile y comenté la variable


o lo que se añadió en la práctica del vídeo y el problema se solucionó
es decir, ya no manda le error que comenté abajo, sin embargo, ¿en qué afecta para las prácticas
posteriores?

Carlos Augusto Pérez Méndez · el año pasado

https://platzi.com/clases/1468-bash-shell/16549-declaracion-de-variables-y-alcance-en-bash-shell/ 10/14
1/11/2020 Declaración de Variables y Alcance en Bash Shell en Curso de Programación en Bash Shell

Alan Onofre Machorro · el año pasado


COURSE_NAME="Programacion Bash"
Cuando utilices cadenas siempre procura ponerlas entre comillas sino te van a saltar ese tipo de
errores

Carlos Augusto Pérez Méndez · el año pasado

https://platzi.com/clases/1468-bash-shell/16549-declaracion-de-variables-y-alcance-en-bash-shell/ 11/14
1/11/2020 Declaración de Variables y Alcance en Bash Shell en Curso de Programación en Bash Shell

!Muchas gracias por el dato!, aquí se aprende mucho.


Saludos.

willeonardo19 · el año pasado


Yo tambien tuve ese mismo problema, me extraño que no encerrara entre comillas el string.

Ver más respuestas

scdark398 Estudiante · hace 2 años

porque cuando ejecuto el segundo archivo llamado 2_varibles_2.sh


no me sale el nombre ?

Alfonso Adame Rueda · hace 2 años

hola buenas noches,te pregunto ya le diste los permisos de ejecución


después pones : bash 2_variables_2.sh
de todas formas sube una foto de lo que te sale
gracias

DaRk452 · hace 2 años

Hola, estás ejecutando el segundo script desde el primero verdad? Como bien dice Alfonso, por favor
pon un screenshot para ver qué estás ejecutando y cómo.
Saludos!

Alfonso Adame Rueda · hace 2 años

tal vez estas escribiendo mal

GibsPM · el año pasado

El script está programado para ejecutarse correctamente dentro de 2_variables.sh


Si ejecutas 2_variables_2.sh, recibirás nada, por lo que no aparece nombre alguno:

https://platzi.com/clases/1468-bash-shell/16549-declaracion-de-variables-y-alcance-en-bash-shell/ 12/14
1/11/2020 Declaración de Variables y Alcance en Bash Shell en Curso de Programación en Bash Shell

aalvarez75PlZ · hace 8 meses

Estas ejecutando el segundo .sh el cual solo te muestra lo que esta botando el comando echo pero es
el 1er .sh el que debes ejecutar ya que es el que va a exportar la variable nombre.

Emmanuel García · hace 7 meses

Por que estas exportando en 2_variable.sh no en 2_variable_2.sh

Ver más respuestas

jhan carlos mora bayer Estudiante · hace 6 meses

genial

DAVID EDUARDO BAEZ SANCHEZ Estudiante · hace 5 meses

Listo, aprendiendo variables

Paul capelo Estudiante · hace 2 meses

Para los que tiene problema para guardar y les dice algo como “Modo solo lectura” “readonly”,
deben abrir el archivo etc/profile como super usuarios o sea: sudo vim etc/profile.
solo deben poner la contraseña y listo.

https://platzi.com/clases/1468-bash-shell/16549-declaracion-de-variables-y-alcance-en-bash-shell/ 13/14
1/11/2020 Declaración de Variables y Alcance en Bash Shell en Curso de Programación en Bash Shell

Rubén Domínguez Prieto Estudiante · hace 2 meses

En el minuto 6 de la clase 6, al hacer (cp 2_variables.sh 2_variables_2.sh ) y luego ls, a mi me


sale un archivo extra que es: 2_variables.sh~ .¿Alguien sabe cuál es la razón?

Jose Suarez Estudiante · el mes pasado

Genial la explicación de las variables. Como tip de sugiere usar mayúsculas para nombres de
variables. En el ejemplo anterior seria OPCION y NOMBRE

Carlos Augusto Pérez Méndez Estudiante · el año pasado

Ahora que quiero entrar a mi perfil en Ubuntu cuando ingreso la contraseña


me manda un error más o menos así: /etc/profile: (un número que no recuerdo):bash:
Corregir lo más pronto posible.
Supongo que se debe a la variable que se ingresó, si es así, ¿qué debería hacer para que a pesar
de ingresar una nueva variable de entorno mi sistema operativo no se vea afectado?
saludos y muy buena clase.

Marco Antonio González Arellano · hace 7 meses


Tienes que encerrar entre comillas el valor de la variable de entorno que declaraste. en este caso
“Programacion Bash”

https://platzi.com/clases/1468-bash-shell/16549-declaracion-de-variables-y-alcance-en-bash-shell/ 14/14

También podría gustarte