Bash

De doc.ubuntu-es
(Diferencias entre revisiones)
Saltar a: navegación, buscar
(CREO REDIRECCIÓN)
 
(Mejorando contenido)
 
(No se muestra una edición intermedia realizada por un usuario)
Línea 1: Línea 1:
#REDIRECT [[Manual de bash]]
+
[[Archivo:Konsole_captura.png|thumb|bash en una ventana.]]
 +
'''GNU bash''' es un programa cuya función es [[Intérprete de comandos|interpretar órdenes]]. Está basado en la shell clásica de Unix y es compatible con [[w:POSIX|POSIX]]. Su nombre es un acrónimo de ''Bourne-Again Shell'' (otro shell bourne) haciendo un juego de palabras (born-again significa renacimiento) sobre el Bourne shelL, que fue uno de los primeros intérpretes importantes de Unix.
 +
 
 +
== Historia ==
 +
[[w:Brian Fox|Brian Fox]] escribió bash en 1987 para el [[GNU|proyecto GNU]]. En 1990, [[w:Chet Ramey|Chet Ramey]] se convirtió en su principal desarrollador. Bash es el intérprete predeterminado en la mayoría de sistemas [[GNU/Linux]], en los sistemas de la familia [[BSD]], en algunas versiones de Mac OS, y puede ejecutarse en la mayoría de los sistemas operativos [[Unix|tipo Unix]].
 +
 
 +
{| class="wikitable" style="width:100%; border:1px solid #C2B69A; float alig:left;"
 +
|+ Las versiones de bash en Ubuntu
 +
| 8.04 Hardy || 10.04 Lucid || 10.10 Maverick || 11.04 Natty || 11.10 Oneiric || 12.04 Precise
 +
|-
 +
| 3.2 || 4.1 || 4.1 || 4.2 || 4.2 || 4.2
 +
|}
 +
 
 +
== Sintaxis de bash ==
 +
 
 +
La sintaxis de órdenes de bash es un conjunto de instrucciones ampliado de la sintaxis del intérprete Bourne. La especificación definitiva de la sintaxis de órdenes de bash, puede encontrarse en el [http://www.gnu.org/software/bash/manual/bashref.html bash Reference Manual] distribuido por el proyecto GNU.
 +
 
 +
La mayoría de los ''shell [[script]]s'' Bourne pueden ejecutarse por bash sin ningún cambio, con la excepción de aquellos guiones del intérprete de órdenes, o consola, Bourne que hacen referencia a variables especiales de Bourne o que utilizan una orden interna de Bourne. La sintaxis de órdenes de bash incluye ideas tomadas desde el [[Korn Shell]] (ksh) y el [[C Shell]] (csh), como la edición de la línea de órdenes, el historial de órdenes, la pila de directorios, las variables <tt>$RANDOM</tt> y <tt>$PPID</tt>, y la sintaxis de substitución de órdenes [[POSIX]]: <tt>$(...)</tt>. Cuando se utiliza como un intérprete de órdenes interactivo, bash proporciona auto-completado de nombres de programas, nombres de archivos, nombres de variables, etc.
 +
 
 +
== Archivos de inicio de bash ==
 +
 
 +
Cuando bash arranca, ejecuta las órdenes que se encuentran en diferentes archivos.
 +
 
 +
Cuando se invoca a bash como un shell interactivo para el inicio de una sesión ('''login shell'''), o como un shell no interactivo con la opción <tt>--login</tt>, en primer lugar lee y ejecuta órdenes desde el archivo <tt>/etc/profile</tt>, si existe. Después, busca <tt>~/.bash_profile</tt>, <tt>~/.bash_login</tt>, y <tt>~/.profile</tt>, en este orden, y lee y ejecuta las órdenes desde el primero que existe y es legible. La opción <tt>--noprofile</tt> puede utilizarse al comenzar un nuevo shell para inhibir este comportamiento. Cuando un '''login shell''' termina, bash lee y ejecuta las órdenes de <tt>~/.bash_logout</tt>, si existe.
 +
 
 +
Cuando un shell interactivo que no es un login shell arranca, bash lee y ejecuta órdenes desde <tt>~/.bashrc</tt>, si existiese. Esto puede evitarse utilizando la opción <tt>--norc</tt>. La opción <tt>--rcfile archivo</tt> forzará a bash a leer y ejecutar órdenes desde <tt>archivo</tt> en lugar de <tt>~/.bashrc</tt>.
 +
 
 +
Cuando bash arranca de un modo no interactivo, por ejemplo para ejecutar un guión de consola diferente, busca la variable de entorno <tt>BASH_ENV</tt>, si existe expande su valor, y lo utiliza como el nombre del archivo para leer y ejecutar.
 +
 
 +
Si se invoca a bash con el nombre <tt>sh</tt>, intenta replicar el comportamiento de las versiones antiguas de <tt>sh</tt>, a la vez que se mantiene la conformidad con el estándar [[POSIX]]. Cuando se invoca como un login shell interactivo, o un shell no interactivo con la opción <tt>--login</tt>, primero intenta leer y ejecutar órdenes desde <tt>/etc/profile</tt> y <tt>~/.profile</tt>, en este orden. La opción <tt>--noprofile</tt> puede utilizarse para evitar este comportamiento.
 +
 
 +
Cuando se invoca como un shell interactivo con el nombre <tt>sh</tt>, bash busca la variable <tt>ENV</tt>, si está definida expande su valor, y utiliza el valor expandido como el nombre de un archivo para leer y ejecutar. Como un shell invocado como <tt>sh</tt> no intenta leer y ejecutar órdenes desde ningún otro archivo de arranque, y la opción <tt>--rcfile</tt> no tiene efecto. Un shell no interactivo invocado con el nombre <tt>sh</tt> no intenta leer ningún otro archivo de arranque. Cuando se invoca como <tt>sh</tt>, bash entra en el modo ''posix'' después de leer los archivos de inicio.
 +
 
 +
Cuando se inicia bash en el modo posix, por ejemplo con la opción <tt>--posix</tt>, sigue el estándar POSIX para los archivos de inicio. En este modo, los shells interactivos expanden la variable <tt>ENV</tt> y se leen, y ejecutan, las órdenes desde el archivo cuyo nombre es el valor de la variable expandida. No se lee ningún otro archivo de arranque.
 +
 
 +
bash intenta determinar cuando está siendo ejecutado por un demonio de shell remoto, normalmente <tt>rshd</tt>. Si bash determina que está siendo ejecutado por <tt>rshd</tt>, lee y ejecuta órdenes desde <tt>~/.bashrc</tt>, si este archivo existe y es legible. No hará esto si se invoca como <tt>sh</tt>. La opción <tt>--norc</tt> puede utilizarse para evitar este comportamiento, y la opción <tt>--rcfile</tt> puede utilizarse para forzar a leer otro archivo, pero <tt>rshd</tt> normalmente no invoca al shell con estas opciones o permite que sean especificadas.
 +
 
 +
== Programación en Bash ==
 +
 
 +
Un script para bash es un archivo tipo texto, cuyas líneas tienen comandos que son ejecutados (interpretados) por bash. Para lograr que el intérprete de comandos intérprete las líneas de un archivo puede:
 +
 
 +
*Ejecutar /bin/bash seguido del nombre del archivo (o redireccionar la entrada estándar para que provenga del archivo).
 +
*Emplear el comando source seguido del nombre del archivo.
 +
*Emplear el caracter '.' seguido de un espacio y el nombre del archivo.
 +
*Agregar en la primera línea del archivo la cadena #!/bin/bash, dar permiso de ejecución al archivo y teclear el nombre del archivo desde el intérprete de comandos ---como si fuera un nuevo comando.
 +
 
 +
=== Manuales de programación  ===
 +
 
 +
* [http://es.tldp.org/COMO-INSFLUG/COMOs/Bash-Prog-Intro-COMO/Bash-Prog-Intro-COMO.html Programación bash]
 +
* [http://www.tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html BASH Programming - Introduction HOW-TO]
 +
* [http://www.tldp.org/LDP/abs/html/ Advanced bash-Scripting Guide]
 +
* [http://www.cyberciti.biz/nixcraft/linux/docs/uniqlinuxfeatures/lsst/ Linux Shell Scripting Tutorial - A Beginner's handbook]
 +
* [http://snippets-tricks.org/topicos/programacion/shell-scripting/ Shell Scripting - Snippets Tricks]
 +
* [http://www.gulix.cl/wiki/Programaci%C3%B3n_en_Bash Introducción y ejemplos varios /básicos/medios/avanzados en bash script]
 +
 
 +
==Véase también==
 +
 
 +
* [[La terminal]]
 +
* [[Manual de bash]]
 +
* [[Comandos de uso frecuente]]
 +
 
 +
== Enlaces externos ==
 +
<!--
 +
{{wikilibros|El Manual de BASH Scripting Básico para Principiantes|bash}}
 +
 
 +
* {{man|1|bash|Ubuntu|GNU Bourne-Again SHell}}
 +
-->
 +
 
 +
* [http://www.ss64.com/bash/index.html Lista de órdenes]
 +
* [http://www.gnu.org/software/bash/bash.html bash home page]
 +
* [ftp://ftp.cwru.edu/pub/bash/FAQ bash FAQ]
 +
<!-- Guías bash de [[w:TLDP|Linux Documentation Project]]: -->
 +
* [http://www.tldp.org/LDP/Bash-Beginners-Guide/html/ bash Guide for Beginners]
 +
* [http://www.linux.ie/newusers/beginners-linux-guide/shells.php About Shells]
 +
* [http://hypexr.homelinux.org/bash_tutorial.html Beginners bash Tutorial]
 +
* [http://www.vias.org/linux-knowhow/bbg_intro_10.html Linux Know-How] including the bash Guide for Beginners
 +
 
 +
{{Nota| Contenidos iniciales tomados de la [[w:Bash|wikipedia]]}}
 +
<!-- CATEGORÍAS -->
 +
[[Categoría:GNU]]
 +
[[Categoría:Línea de comandos]]

Última revisión de 07:32 8 ene 2012

bash en una ventana.

GNU bash es un programa cuya función es interpretar órdenes. Está basado en la shell clásica de Unix y es compatible con POSIX. Su nombre es un acrónimo de Bourne-Again Shell (otro shell bourne) haciendo un juego de palabras (born-again significa renacimiento) sobre el Bourne shelL, que fue uno de los primeros intérpretes importantes de Unix.

Contenido

[editar] Historia

Brian Fox escribió bash en 1987 para el proyecto GNU. En 1990, Chet Ramey se convirtió en su principal desarrollador. Bash es el intérprete predeterminado en la mayoría de sistemas GNU/Linux, en los sistemas de la familia BSD, en algunas versiones de Mac OS, y puede ejecutarse en la mayoría de los sistemas operativos tipo Unix.

Las versiones de bash en Ubuntu
8.04 Hardy 10.04 Lucid 10.10 Maverick 11.04 Natty 11.10 Oneiric 12.04 Precise
3.2 4.1 4.1 4.2 4.2 4.2

[editar] Sintaxis de bash

La sintaxis de órdenes de bash es un conjunto de instrucciones ampliado de la sintaxis del intérprete Bourne. La especificación definitiva de la sintaxis de órdenes de bash, puede encontrarse en el bash Reference Manual distribuido por el proyecto GNU.

La mayoría de los shell scripts Bourne pueden ejecutarse por bash sin ningún cambio, con la excepción de aquellos guiones del intérprete de órdenes, o consola, Bourne que hacen referencia a variables especiales de Bourne o que utilizan una orden interna de Bourne. La sintaxis de órdenes de bash incluye ideas tomadas desde el Korn Shell (ksh) y el C Shell (csh), como la edición de la línea de órdenes, el historial de órdenes, la pila de directorios, las variables $RANDOM y $PPID, y la sintaxis de substitución de órdenes POSIX: $(...). Cuando se utiliza como un intérprete de órdenes interactivo, bash proporciona auto-completado de nombres de programas, nombres de archivos, nombres de variables, etc.

[editar] Archivos de inicio de bash

Cuando bash arranca, ejecuta las órdenes que se encuentran en diferentes archivos.

Cuando se invoca a bash como un shell interactivo para el inicio de una sesión (login shell), o como un shell no interactivo con la opción --login, en primer lugar lee y ejecuta órdenes desde el archivo /etc/profile, si existe. Después, busca ~/.bash_profile, ~/.bash_login, y ~/.profile, en este orden, y lee y ejecuta las órdenes desde el primero que existe y es legible. La opción --noprofile puede utilizarse al comenzar un nuevo shell para inhibir este comportamiento. Cuando un login shell termina, bash lee y ejecuta las órdenes de ~/.bash_logout, si existe.

Cuando un shell interactivo que no es un login shell arranca, bash lee y ejecuta órdenes desde ~/.bashrc, si existiese. Esto puede evitarse utilizando la opción --norc. La opción --rcfile archivo forzará a bash a leer y ejecutar órdenes desde archivo en lugar de ~/.bashrc.

Cuando bash arranca de un modo no interactivo, por ejemplo para ejecutar un guión de consola diferente, busca la variable de entorno BASH_ENV, si existe expande su valor, y lo utiliza como el nombre del archivo para leer y ejecutar.

Si se invoca a bash con el nombre sh, intenta replicar el comportamiento de las versiones antiguas de sh, a la vez que se mantiene la conformidad con el estándar POSIX. Cuando se invoca como un login shell interactivo, o un shell no interactivo con la opción --login, primero intenta leer y ejecutar órdenes desde /etc/profile y ~/.profile, en este orden. La opción --noprofile puede utilizarse para evitar este comportamiento.

Cuando se invoca como un shell interactivo con el nombre sh, bash busca la variable ENV, si está definida expande su valor, y utiliza el valor expandido como el nombre de un archivo para leer y ejecutar. Como un shell invocado como sh no intenta leer y ejecutar órdenes desde ningún otro archivo de arranque, y la opción --rcfile no tiene efecto. Un shell no interactivo invocado con el nombre sh no intenta leer ningún otro archivo de arranque. Cuando se invoca como sh, bash entra en el modo posix después de leer los archivos de inicio.

Cuando se inicia bash en el modo posix, por ejemplo con la opción --posix, sigue el estándar POSIX para los archivos de inicio. En este modo, los shells interactivos expanden la variable ENV y se leen, y ejecutan, las órdenes desde el archivo cuyo nombre es el valor de la variable expandida. No se lee ningún otro archivo de arranque.

bash intenta determinar cuando está siendo ejecutado por un demonio de shell remoto, normalmente rshd. Si bash determina que está siendo ejecutado por rshd, lee y ejecuta órdenes desde ~/.bashrc, si este archivo existe y es legible. No hará esto si se invoca como sh. La opción --norc puede utilizarse para evitar este comportamiento, y la opción --rcfile puede utilizarse para forzar a leer otro archivo, pero rshd normalmente no invoca al shell con estas opciones o permite que sean especificadas.

[editar] Programación en Bash

Un script para bash es un archivo tipo texto, cuyas líneas tienen comandos que son ejecutados (interpretados) por bash. Para lograr que el intérprete de comandos intérprete las líneas de un archivo puede:

  • Ejecutar /bin/bash seguido del nombre del archivo (o redireccionar la entrada estándar para que provenga del archivo).
  • Emplear el comando source seguido del nombre del archivo.
  • Emplear el caracter '.' seguido de un espacio y el nombre del archivo.
  • Agregar en la primera línea del archivo la cadena #!/bin/bash, dar permiso de ejecución al archivo y teclear el nombre del archivo desde el intérprete de comandos ---como si fuera un nuevo comando.

[editar] Manuales de programación

[editar] Véase también

[editar] Enlaces externos

Clip.png Contenidos iniciales tomados de la wikipedia
Herramientas personales