Bash/Vantaxes
Bash | ||
← Volver a Configurar como a terminal predeterminada | Vantaxes |
As seguintes son algunhas das funcionalidades máis salientables de Bash:
Inicio
[editar]Ademais das opcións da liña de ordes dun só carácter que adoitan poder configurarse mediante a orde set
, pódense usar outras moitas opcións de varios caracteres.
Ficheiros de inicio
[editar]Os ficheiros de inicio son guións que Bash lee e executa ao iniciarse. Que ficheiros de inicio se executan depende da maneira en que se inicie Bash:
Inicio como terminal de identificación interactivo ou con --login
[editar]Enténdese por “interactivo” que se poden introducir ordes. O terminal non está a executarse porque se activou un guión. O de «terminal de identificación» significa que para acceder ao terminal fai falla identificarse no sistema, xeralmente mediante unha combinación de usuario e contrasinal.
Os seguintes son os ficheiros que se lerán:
- /etc/profile
- o primeiro ficheiro que exista e poda lerse dos seguintes:
- ~/.bash_profile
- ~/.bash_login
- ~/.profile
- ~/.bash_logout ao pechar o terminal.
Aparecerán mensaxes de erro cando se atope algún dos ficheiros pero non se poida ler. Cando Bash non atope un dos ficheiros, irá polo seguinte.
Inicio como terminal sen identificación interactivo
[editar]Na terminal sen identificación non fai falla identificarse no sistema. Serán deste tipo os terminais abertos premendo unha icona ou unha entrada do menú no modo gráfico.
O ficheiro que se le é o ~/.bashrc.
Inicio non interactivo
[editar]Todos os guións empregan terminais non interactivos. Están programados para realizar unha serie de tarefas concretas que non poden cambiar.
O ficheiro que se le é o que estea definido na variable BASH_ENV
. Para a busca do ficheiro non se emprega a variable PATH
, polo que cómpre indicar a ruta completa ao ficheiro.
Inicio mediante a orde sh
[editar]Os seguintes son os ficheiros que se lerán:
- /etc/profile
- ~/.profile
Cando se inicie de maneira interactiva, a variable ENV
pode conter información adicional sobre o inicio.
Modo POSIX
[editar]Para activar esta opción pode facerse mediante a orde set
:
set -o posix
Ou chamando a bash xunto coa opción --posix
. Entón Bash procurará comportarse acorde ao estándar POSIX dentro das súas posibilidades. Configurar a variable POSIXLY_CORRECT
ten o mesmo efecto.
O ficheiro que se lea será o definido na variable ENV
.
Inicio remoto
[editar]Cando se inicia mediante rshd
, o ficheiro que se lea será ~/.bashrc.
Inicio sendo o UID distinto do EUID
[editar]Neste caso non se le ningún ficheiro.
Terminais interactivos
[editar]Xeralmente os terminais interactivos escriben e len no terminal do usuario. Bash iníciase de maneira interactiva cando se executa sen argumentos ─opcións aparte salvo que a opción sexa unha cadea da que ler ou cando se inicia para ler da entrada estándar─.
Saber se un terminal é interactivo
[editar]Para saber se un terminal é interactivo, abonda con ver o que hai no parámetro especial -
, que conterá un i se é interactivo:
[usuario@máquina ~]$ echo $-
himBH
Nos terminais non interactivos, o prompt, PS1
, non está activado.
Comportamento dos terminais interactivos
[editar]A seguinte é unha lista das diferencias do modo interactivo:
- Bash le ficheiros de inicio.
- O control de traballos está activado de maneira predeterminada.
- Os prompts están activados,
PS2
estao para ordes de varias liñas, xeralmente co valor >. Este prompt aparecerá tamén cando o terminal pense que se introduciu unha orde incompleta, como cando se esquece un " final ou estruturas de ordes que non se poden deixar de lado, etc. - De maneira predeterminada, as ordes lense da liña de ordes mediante
readline
. - Ao chegar a un fin de ficheiro (
EOF
), en vez de saír inmediatamente Bash interpreta a ordeignoreeof
. - O historial de ordes e a expansión do historial están activadas de maneira predeterminada. O historial gárdase na ruta indicada na variable
HISTFILE
ao saír do terminal. O valor predeterminado da variable é ~/.bash_history. - A expansión de alias está activada.
- A falta de trampas, o sinal
SIGTERM
ignórase. - A falta de trampas, o sinal
SIGINT
recóllese e xestiónase. Por iso ao premer a combinación de teclas Ctrl+C, por exemplo, o terminal non desaparece. - Enviar sinais
SIGHUP
a todos os traballos ao saír configúrase coa opción--huponexit
. - As ordes execútanse a medida que se len.
- Bash comproba se hai correo periodicamente.
- Bash pode configurarse para pecharse ao atopar variables ás que non se fixese referencia. No modo interactivo este comportamento está desactivado.
- Non se pechará o terminal por atoparse erros de redirección nas ordes propias.
- Non se pechará o terminal porque ordes propias especiais devolvan erros ao empregalas no modo POSIX.
- Non se pechará o terminal por un fallo de
exec
. - Non se pechará o terminal por erros de análise da sintaxe.
- A comprobación simple dos argumentos da orde propia
cxd
está activada de maneira predeterminada. - Está activada a saída automática unha vez se esgote o tempo indicado na variable
TMOUT
.
Condicionais
[editar]A orde [[
e as ordes propias test
e [
empregan expresións condicionais.
As expresións poderán ter un ou dous elementos. As dun só elemento adoitan empregarse para comprobar o estado dun ficheiro. Nelas só se necesita un elemento, no exemplo un ficheiro, para realizar a operación.
Tamén hai operadores de cadea e de comparación numérica, que necesitarán de dous elementos para que a operación se efectúe.
Operacións aritméticas
[editar]O terminal permite calcular operacións aritméticas, ben como unha das expansións do terminal ben mediante a orde propia let
.
O cálculo realízase con variables de tipo enteiro de tamaño fixo sen ningún tipo de comprobación en caso de desbordamento, se ben as divisións entre 0 trampéanse e márcanse como erro. Os operadores e as súas regras son os mesmos que na linguaxe de programación C.
Alias
[editar]Os alias permiten que unha palabra se substitúa por unha cadea de texto ao empregarse a palabra como a primeira dunha orde simple. O terminal mantén unha lista de alias que poden activarse e desactivarse mediante as ordes alias
e unalias
respectivamente.
Bash sempre le polo menos unha liña de entrada completa antes de executar ningunha das ordes que contén. Os alias aplícanse durante a lectura da orde, non durante a súa execución. Por tanto, unha definición de alias que apareza na mesma liña que outra orde non ten efecto ata que se le a seguinte liña de entrada. As ordes que sigan á definición do alias na mesma liña non se ven afectadas por dita definición.
Os alias aplícanse ao ler a definición dunha función, non ao executala, xa que a definición dunha función é de por si unha orde complexa. Como consecuencia, os alias que se definan nunha función non estarán dispoñibles ata despois que se execute dita función.
Matrices
[editar]Bash permite o uso de variables de tipo matriz dunha dimensión. Calquera variable pode empregarse como tal. A orde propia declare
permite declarar matrices explicitamente. As matrices non teñen ningún tipo de límite na súa lonxitude, nin é necesario que os seus membros estean indexados ou se asignen de maneira contigua. As matrices numéranse a partir de cero.
Rima de directorios
[editar]A rima (stack) de directorios é unha lista dos últimos directorios nos que se estivo. A orde propia pushd
engade os directorios á rima ao tempo que cambia o directorio actual, e a orde propia popd
elimina os directorios indicados da rima ao tempo que se sitúa neles.
O contido da rima pode comprobarse executando dirs
ou vendo o contido da variable DIRSTACK
.
O terminal restrinxido
[editar]Ao iniciar Bash mediante a orde rbash
ou coa opción --restricted
ou -r
ocorre o seguinte:
- A orde propia
cd
desactívase. - Non se poden alterar as variables
SHELL
,PATH
,ENV
ouBASH_ENV
. - Os nomes das ordes non poden conter barras inclinadas («/»).
- Non se permiten nomes de ficheiro que conteñan unha barra inclinada («/») coa orde propia
.
(source
). - A orde propia
hash
non admite barras inclinadas («/») coa opción-p
. - A importación de funcións durante o inicio está desactivada.
SHELLOPTS
ignórase durante o inicio.- A redirección da saída mediante
>
,>|
,><
,>&
,&>
e>>
está desactivada. - A orde propia
exec
está desactivada. - As opcións
-f
e-d
da orde propiaenable
están desactivadas. - A ruta predeterminada non pode indicarse mediante a orde propia
command
. - Non se pode apagar o modo restrinxido.
Ao executarse un guión, rbash
apágase e as restricións ignóranse para a execución do guión.
Bash | ||
← Volver a Configurar como a terminal predeterminada | Vantaxes |