¿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.