Bash

De doc.ubuntu-es
(Diferencias entre revisiones)
Saltar a: navegación, buscar
(CREO REDIRECCIÓN)
 
(creo página con contenido inicial)
Línea 1: Línea 1:
#REDIRECT [[Manual de bash]]
+
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]]. Fue escrito para el [[GNU|proyecto GNU]] y es el intérprete de comandos por defecto de Ubuntu, de la mayoría de las distribuciones de [[GNU/Linux|Linux]] y de algunas versiones de Mac OS.
 +
 
 +
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]] ([[sh]]), que fue uno de los primeros intérpretes importantes de Unix.
 +
 
 +
== Historia ==
 +
[[w:Brian Fox]] escribió bash en 1987. En 1990, [[w: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]], además de Mac OS X v10.4 .28Tiger.29|Mac OS X Tiger]], y puede ejecutarse en la mayoría de los sistemas operativos [[Unix#Familias|tipo Unix]].
 +
 
 +
== Sintaxis de bash ==
 +
 
 +
La sintaxis de órdenes de bash es un superconjunto de instrucciones basadas en 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. Esta sección destaca algunas de sus únicas características.
 +
 
 +
La mayoría de los ''shell [[scripts]]'' ('''guiones de intérprete de órdenes''') 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 autocompletado de nombres de programas, nombres de archivos, nombres de variables, etc, cuando el usuario pulsa la tecla TAB.
 +
 
 +
 
 +
== 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.
 +
 
 +
==Véase también==
 +
* [[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]
 +
* [http://groups.google.com/groups?dq=&lr=&ie=UTF-8&group=gnu.announce&selm=mailman.1865.1091019304.1960.info-gnu%40gnu.org bash 3.0 Announcement]
 +
* [http://www.network-theory.co.uk/bash/manual/ The GNU bash Reference Manual], ([http://www.network-theory.co.uk/docs/bashref/ HTML version]) by [[Chet Ramey]] and [[Brian Fox]], ISBN 0-9541617-7-7
 +
 
 +
Guías bash de [[w:TLDP|Linux Documentation Project]]:
 +
 
 +
* [http://es.tldp.org/COMO-INSFLUG/COMOs/Bash-Prog-Intro-COMO/Bash-Prog-Intro-COMO.html Programación bash]
 +
* [http://www.tldp.org/LDP/Bash-Beginners-Guide/html/ bash Guide for Beginners]
 +
* [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]
 +
 
 +
Otras guías y tutoriales:
 +
 
 +
* [http://www.cyberciti.biz/nixcraft/linux/docs/uniqlinuxfeatures/lsst/ Linux Shell Scripting Tutorial - A Beginner's handbook]
 +
* [http://www.linux.ie/newusers/beginners-linux-guide/shells.php About Shells]
 +
* [http://hypexr.homelinux.org/bash_tutorial.html Beginners bash Tutorial]
 +
* [http://deadman.org/bash.html Advancing in the bash Shell tutorial]
 +
* [http://www.vias.org/linux-knowhow/bbg_intro_10.html Linux Know-How] including the bash Guide for Beginners
 +
* [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]
 +
 
 +
{{Nota| Contenidos iniciales tomados de la [[w:Bash|wikipedia]]}}
 +
[[Categoría:GNU]]
 +
[[Categoría:Línea de comandos]]

Revisión de 18:26 7 ene 2012

GNU bash es un programa cuya función es interpretar órdenes. Está basado en la shell clásica de Unix y es compatible con w:POSIX. Fue escrito para el proyecto GNU y es el intérprete de comandos por defecto de Ubuntu, de la mayoría de las distribuciones de Linux y de algunas versiones de Mac OS.

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 (sh), que fue uno de los primeros intérpretes importantes de Unix.

Contenido

Historia

w:Brian Fox escribió bash en 1987. En 1990, w: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, además de Mac OS X v10.4 .28Tiger.29|Mac OS X Tiger]], y puede ejecutarse en la mayoría de los sistemas operativos tipo Unix.

Sintaxis de bash

La sintaxis de órdenes de bash es un superconjunto de instrucciones basadas en 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. Esta sección destaca algunas de sus únicas características.

La mayoría de los shell scripts (guiones de intérprete de órdenes) 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 autocompletado de nombres de programas, nombres de archivos, nombres de variables, etc, cuando el usuario pulsa la tecla TAB.


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.

Véase también

Enlaces externos

Guías bash de Linux Documentation Project:

Otras guías y tutoriales:

Clip.png Contenidos iniciales tomados de la wikipedia
Herramientas personales