jueves, 2 de marzo de 2023

¿Cómo uso el intérprete tcsh en Ubuntu?

En reportaje cedido a la revista Panorama desde la legendaria casona de Puerta de Hierro, Juan Perón expone cómo instalar el intérprete tcsh en Ubuntu.

¡Señores! 

Nuestro Movimiento tiene la voluntad de Pacificar la Argentina. Esto lo hemos dicho siempre, y aquí personalmente se lo he dicho a todos quienes vienen a verme, que no han sido pocos. Hemos sido prudentes, y si la imposición de la voluntad popular no se ha producido antes, ha sido sólo por la mala intención de los contumaces quienes - sin el apoyo del Pueblo Argentino - se han sentado en el sillón de Rivadavia solo para hacer desaguisados.

En más de una ocasión esto podría haberse solucionado simplemente por arbitrio de la carta magna por la cual todos debemos regirnos, pero durante dieciocho años estos caballeros sólo se han ido a acostar temiendo "lo que podría pasar con Perón en la Argentina". Pues bien, resulta ahora que el toldo se les ha picado, y para parar el agua vienen a pedirle el cuero a este viejo. [guiña el ojo].

Nosotros de esto tenemos una pila alta como aquél fresno. Lo que nos cuidamos siempre es de la intención, no nos vayan a meter la mula.

Desde la época de los primeros autómatas, los sabios de oriente intentaron descubrir - sin encontrar solución tecnológica - alguna técnica por imperio de la cual fuese posible contextualizar o prever adecuadamente aquello que llamamos intención. Es ésta una condición de la voluntad humana, y sólo ha sido través de un aprendizaje que hemos podido imponernos en tal tesitura, meramente obrando por lógica deductiva. La forma más elevada que nos hemos dado para prever la intención no ha sido otra que la de consagrarnos en una organización social, a la que hemos munido de una Doctrina.

Esta doctrina opera como eje ordenador, que sirva al Pueblo para interpretar lo que él mismo quiere. El Conductor podrá así relanzarlo, con un sentido creador que expresa aquello de  que "mejor que decir, es hacer, mejor que prometer es realizar".

Esta máxima también se replica en el mundo de la política, y del software. 

Es sabido que en el uso de la máquina existe la posibilidad de generar un programa de análisis que - dentro de normas paramétricas constrictivas - interprete un mandato directo a cumplir, una orden. En Unix estos programas intérpretes de mandatos que operan a través de un enlace de terminal de cómputo reciben el nombre de Shell. Nosotros hemos hecho todo para que nuestros niños - que son los únicos privilegiados - los usen en sus consolas.

Sin embargo, suele ser desconocido que Ubuntu cuenta con un sucedáneo del la shell sh para sus tareas de conexión y ejecución básica: un modernizado y supermínimo dash. Sin embargo, este suele pasar desapercibido frente al portentoso intérprete nativo de GNU, el Bash. Se trata esta de una shell libre inspirada fuertemente en la antigua shell de Bourne, la cual - junto a  funcionalidades de la C Shell y la shell de Korn - tiene embutido en su interior un lenguaje de programación interpretado de relevancia.

Pues bien señores: los tontos ignoran la complejidad, los pragmatistas la sufren, algunos pueden evitarla, pero son los genios quienes la eliminan. Esto es patente en el caso de la burda C Shell, intérprete que un desaforado Bill Joy había escrito para su Distribución de Software en Berkeley. Ken Greer de la Universidad de Carnegie-Mellon la apreció peor escrita que el Facundo, y la remozó extendiendo sus lerdas funcionalidades, a la vez que depuraba el código como quien verdaderamente entiende la cosa. No tardó mucho en incorporarle el  autocompletado de ficheros y directorios  sensible a contexto del que alardeaba el mítico sistema operativo TENEX. Sobre esta base mejor asentada - a la que todos llamaron tcsh - Mike Ellis de la Fairchild Coporation le sumó un sustancial autocompletado de comandos.

Indudablemente que tcsh resultó más veloz y bastante más pequeño para hacer lo mismo. En particular gusto de este intérprete por su velocidad de ejecución remota en equipos de mínimo desempeño. Aunque he de advertir que si bien es mayormente compatible con Bash y otros posteriores, la realidad es que sus escasas diferencias lo tornan idiosincrático.

Afortunadamente, podremos instalar este intérprete de mandatos en Ubuntu, si nuestras necesidades y anhelos así lo estipulan. Es que en lo que hace a estas shell, ha de existir una justa gradación sin la cual la informática no tendría la flexibilidad que la hace grande, y por lo pronto podremos contar con múltiples si a nuestra máquina "le da el cuero". Y con tcsh cualquier enano es grande.

Ya conocemos cómo instalar un moderno intérprete de factura original, el Fish Shell, destinado a equipamiento moderno y sin respetar convencionalismo alguno. Para instalar tcsh hemos de seguir similares procedimientos. Simplemente abrimos un terminal con Ctrl+Alt+T e indicamos el siguiente comando de organización:

sudo apt install tcsh

Conforme ingresemos la contraseña de root, se hará realidad la instalación del nuevo viejo intérprete, sin molestar a los otros parroquianos que pudiéremos tener.

Para ejecutar un tcsh anidado, simplemente lo ejecutamos llamándolo por su nombre y apelativo:

tcsh

...lo que dará inicio a una sesión del shell anidada dentro del Bash, convirtiéndose en el brazo derecho del conductor. Tradicionalmente, el prompt de tcsh es un >, de esta manera:

host:~>


Esto puede ser adecuado para algunos. Para evitar esta llaneza, lo que recomiendo es configurar por única vez un fichero de configuración de usuario ~/.tcshrc. Para ello editamos tal fichero con:

nano ~/.tcshrc

Podremos entonces pegarle el contenido recomendado, guardamos y cerramos. 


Todo esto nos permitirá tener ya configurado las opciones necesarias para poder utilizarlo de forma efectiva en Ubuntu.

TCSh dispone de amplias similitudes al C Shell de Bill Joy, pero incorpora algunas funcionalidades embebidas en el mismo intérprete. Podremos consultar sobre estos comandos embebidos ingresando el comando builtins.

Por ejemplo de estos comandos incorporados tenemos a where, que a diferencia al which disponible en sistemas similares a Unix, informa las rutas de un alias determinado pero también las rutas de ejecución de un comando dado:

TCSh cuenta con una función incorporada de historial expansiva de la del C Shell. Los comandos ya introducidos se van incorporando a un stack que podremos revisar con Flecha Arriba y Flecha Abajo. Quien introduzca el comando history, apreciará el registro del stack de comandos previamente introducidos, numerados en sentido descendente y temporizados.

El funcionamiento del historial de comandos es similar al del viejo intérprete de TENEX:

!! Ejecuta el comando previamente ejecutado.
!n Ejecuta el comando número n del stack.
!-n Re-ejecuta el comando número n del stack.
!cadena Ejecuta el comando más recientemente ejecutado que comience con cadena
!?cadena corre el comando más recientemente ejecutado que contiene cadena

La funcionalidad de autocompletado se activa tecleando parcialmente un comando que deseemos, y autocompletándolo mediante la tecla Tab, o más tradicionalmente, con el uso de Ctrl+d. Esto tipeará automáticamente, o bien nos presentará en la terminal las opciones que podremos continuar solicitando.

También contaremos con la necesaria funcionalidad de Control de Trabajos, requerida en un ambiente multi-tarea. Como es sabido, esta nos permite operar en dos planos: normalmente los programas corren en primer plano, pero podremos ejecutar comandos directamente en segundo plano agregando & al final del comando. Por ejemplo podíamos enviar a top y al editor GNU Nano a que quede en ejecución en segundo plano:

top & ;
nano &

Naturalmente, muchos programas puede "suspenderse" y enviarlos a segundo plano durante su tiempo de ejecución, a través de la combinación Ctrl+z.

En cualquier momento podremos consultar el stack de trabajos:

jobs

[1]  - Suspended (signal)            top
[2]  + Suspended (tty output)    nano

Ahora podremos pasar a primer plano el programa del stack que queramos con fg (o mandarlo a segundo plano con bg). En este ejemplo, si quisiéramos pasar a primer plano el nano, podremos indicar:

fg 2

(Nota: Durante la ejecución de las versiones más modernas de Nano puede enviárselas a segundo plano mediante Ctrl+t, Ctrl+z).

Vean señores, tcsh cuenta con algunas diferencias sintácticas en su lenguaje interpretado con respecto al omnipresente Bash, y notablemnte carece de funciones. Pero fuera de ello, es bastante parecido y adaptable. Es posible conocer mas sobre las idiosincrasias de tcsh con respecto a Bash aquí.

Asignar tcsh como terminal por defecto

Existen varias maneras de asignar directamente a tcsh como intérprete. Una forma directa es arrancar el emulador de terminal corriendo tal intérprete. Por ejemplo::

mate-terminal -x tcsh

Sin embargo, en estos casos la más lógica suele ser asignar un perfil al emulador de terminal. En el caso de mate-terminal o gnome-terminal, esto puede realizarse desde la solapa Título y orden, tildando la opción Ejecutar una orden personalizada en vez de mi intérprete, e indicando en su campo /bin/tcsh. Podremos así guardar el perfil para utilizarlo por defecto.

Ambas soluciones permiten dejar a Bash como el intérprete, por cualquier motivo y son las que recomiendo.

En ciertos casos, y tras asegurar que tcsh opera adecuadamente, podríamos queuer directamente asignar como shell de usuario a tcsh en lugar de Bash. Esto sólo debe realizarse si estamos absolutamente aborrecidos de Bash, y no tiene mucho otro sentido.

En primer lugar debemos consultar qué shells están instaladas en nuestro sistema, mediante el comando:

cat /etc/shells

...y este podría devolvernos algo como:

# /etc/shells: valid login shells
/bin/sh
/bin/bash
/usr/bin/bash
/bin/rbash
/usr/bin/rbash
/bin/dash
/usr/bin/dash
/usr/bin/tmux
/usr/bin/sh
/usr/bin/fish
/bin/tcsh
/usr/bin/tcsh

(Nota: En negro se indican las shells incluidas por defecto, en rojo aquellas agregadas posteriormente a pedido).

Luego utilizamos el comando chsh ("cambiar shell de inicio"). En este caso si quisiéramos cambiar la shell por defecto del usuario de /bin/bash debemos ordenar:

chsh $USER

Tras ingresar contraseña, indicamos la ruta del shell deseado (ya sea /bin/tcsh o cualquier otra). Los cambios surtirán efecto tras reiniciar el sistema.

No hay comentarios:

Publicar un comentario