Command-line shell (Español)
De Wikipedia:
- Un intérprete de línea de órdenes de Unix proporciona una interfaz de usuario tradicional para el sistema operativo Unix y para sistemas similares a Unix. Los usuarios dirigen el funcionamiento de la computadora introduciendo órdenes como texto para que un intérprete de línea de órdenes ejecute o creando scripts de texto de uno o más órdenes de este tipo.
Listado de intérpretes de línea de órdenes
Los intérpretes de línea de órdenes que son más o menos compatibles con POSIX se listan bajo #Compatibles POSIX, mientras que los intérpretes de línea de órdenes que tienen una sintaxis diferente están bajo #Intérpretes de línea de órdenes alternativos.
Compatibles POSIX
Todos estos intérpretes de línea de órdenes se pueden enlazar desde /usr/bin/sh
. Cuando Bash, mkshAUR y zsh se invocan con el nombre sh
, automáticamente se vuelven más compatibles con POSIX.
- Bash — Bash extiende el intérprete de línea de órdenes Bourne con el historial y el completado de la línea de órdenes, matrices indexadas y asociativas, aritmética de enteros, sustitución de procesos, cadenas de caracteres, coincidencia de expresiones regulares y expansión de llaves.
- Dash — Descendiente de la versión NetBSD del intérprete de línea de órdenes Almquist (ash). Un intérprete de línea de órdenes rápido y compatible con POSIX que pretende ser lo más pequeño posible.
- Oil Shell (OSH) — Oil Shell es un intérprete de línea de órdenes UNIX compatible con Bash. OSH se puede ejecutar en la mayoría de los sistemas operativos tipo UNIX, incluido GNU/Linux. Está escrito en Python (v2.7), pero viene con un ejecutable nativo. El dialecto de Bash reconocido por OSH se denomina lenguaje OSH.
Intérpretes de línea de órdenes alternativos
- C shell (tcsh) — El intérprete de lenguaje de órdenes se puede utilizar como intérprete de línea de órdenes de inicio de sesión interactivo y como procesador de órdenes de script de intérprete de línea de órdenes. Incluye un editor de línea de órdenes, completado programable de palabras, corrección ortográfica, un mecanismo de historial, control de trabajos y una sintaxis tipo C.
- Powershell — PowerShell es un lenguaje de programación orientado a objetos y un intérprete de línea de órdenes interactivo, originalmente escrito y exclusivo para Windows. Más tarde, fue de código abierto y portado a macOS y Linux.
Cambiar su intérprete de línea de órdenes predeterminado
Después de instalar uno de los intérpretes de línea de órdenes anteriores, puede ejecutar ese intérprete de línea de órdenes dentro de su intérprete de línea de órdenes actual, simplemente ejecutándolo. Sin embargo, si quiere que le sirvan ese intérprete de línea de órdenes cuando inicie sesión, deberá cambiar su intérprete de línea de órdenes predeterminado.
Para listar todos los intérpretes de línea de órdenes instalados, ejecute:
$ chsh -l
Y para configurar uno como predeterminado para su usuario haga:
$ chsh -s ruta-completa-al-intérprete-de-línea-de-órdenes
Si está utilizando systemd-homed, ejecute:
$ homectl update --shell=ruta-completa-al-intérprete-de-línea-de-órdenes usuario
donde ruta-completa-al-intérprete-de-línea-de-órdenes es la ruta completa dada por .
Si ahora se desconecta y vuelve a iniciar sesión, será recibido por el otro intérprete de línea de órdenes.
/etc/shells
como referencia. Si un intérprete de línea de órdenes instalado recientemente no está presente en la lista, se puede añadir manualmente a este archivo.Desinstalar el intérprete
Cambie el intérprete predeterminado antes de eliminar el paquete del intérprete.
Alternativamente, modifique la base de datos de usuarios.
Utilícelo para cada usuario con zsh configurado como su intérprete de inicio de sesión (incluido el superusuario si fuera necesario). Cuando se complete, el paquete se puede eliminar.
Intérprete de línea de órdenes de inicio de sesión
Un intérprete de línea de órdenes de inicio de sesión es un modo de invocación, en el que el intérprete de línea de órdenes lee archivos destinados a una inicialización única, como de todo el sistema o el del usuario u otros archivos específicos del intérprete. Estos archivos configuran el entorno inicial, que es heredado por todos los demás procesos iniciados desde el intérprete (incluidos otros intérpretes que no son de inicio de sesión o programas gráficos). Por lo tanto, se leen solo una vez al comienzo de una sesión, que es, por ejemplo, cuando el usuario inicia sesión en la consola o mediante SSH, cambia el usuario con sudo o su utilizando el parámetro , o cuando el usuario invoca manualmente un intérprete de línea de órdenes de inicio de sesión (por ejemplo, mediante ).
Véase #Archivos de configuración y los enlaces que contiene para obtener una descripción general de los distintos archivos de inicialización. Para obtener más información sobre el intérprete de línea de órdenes de inicio de sesión, véase también ¿Diferencia entre el intérprete de línea de órdenes de inicio de sesión y el intérprete sin inicio de sesión? y ¿Por qué un intérprete de línea de órdenes de "inicio de sesión" sobre un intérprete de "no inicio de sesión"? en Stackexchange.
Archivos de configuración
Para iniciar automáticamente los programas en la consola o al iniciar sesión, puede usar los archivos/directorios de inicio del intérprete de línea de órdenes. Lea la documentación de su intérprete de línea de órdenes o su artículo de ArchWiki, por ejemplo Bash (Español)#Archivos de configuración o Zsh#Startup/Shutdown files.
Véase también Archivos de configuración para una comparación de varios archivos de configuración de varios intérpretes de línea de órdenes.
/etc/profile
Al iniciar sesión, todas las cargas (sources) en compatibles con el intérprete de línea de órdenes Bourne, que a su vez cargan los archivos legible en /etc/profile.d/
: estos scripts no requieren una directiva de intérprete, ni necesitan ser ejecutables. Se utilizan para configurar un entorno y definir configuraciones específicas de la aplicación.
Estandarización
Es posible hacer que (algunos) archivos de configuración de los intérpretes de línea de órdenes sigan la misma convención de nomenclatura, así como admitir alguna configuración común entre los intérpretes de línea de órdenes.
Véase el artículo sobre esto y el repositorio relacionado. Véase también xsh.
Entrada y salida
Véase también GregsWiki y Redirección E/S.
- Las redirecciones truncan los archivos antes de ejecutar las órdenes: por lo tanto no funcionará como se esperaba. Mientras que algunas órdenes (sed, por ejemplo) proporcionan una opción para editar archivos al momento, muchos no lo hacen. En esos casos puede utilizar la orden del paquete moreutils.
- Debido a que cat no está integrado en el intérprete de línea de órdenes, en muchas ocasiones puede resultarle más conveniente utilizar una redirección, por ejemplo en scripts, o si le importa mucho el rendimiento. De hecho, hace lo mismo que .
- Los intérpretes de línea de órdenes compatibles con POSIX soportan Documentos aquí (Here Documents):
- Las tuberías del intérprete de línea de órdenes operan en la salida estándar (stdout) por defecto. Para operar en puede redireccionar stderr a stdout con o, en Bash 4, .
- Recuerde que muchas utilidades principales de GNU aceptan archivos como argumentos, por lo que, por ejemplo se puede reemplazar por .
Véase también
- Evolución de los intérpretes de línea de órdenes en Linux en IBM developerWorks
- terminal.sexy — Diseñador de esquemas de color de terminal
- Hyperpolyglot — Comparación lado-a-lado de las sintaxis del intérprete de línea de órdenes
- UNIX Power Tools — Utilización general de la herramienta de línea de comandos
- commandlinefu.com — Compartir fragmentos de línea de órdenes
- List of applications#Terminal emulators