Featured image of post ¡Vámonos de pesca con Fish Shell!

¡Vámonos de pesca con Fish Shell!

Decidí modernizar mi shell de linux utilizando fish shell. Solamente las sugerencias automáticas valen la pena su instalación, pero tiene otras opciones interesantes.

El otro día estaba viendo un video en Youtube y salió a colación Fish Shell y me pareció interesante. Digo, cuando empezamos con Linux todos hemos comenzado con Bash y nunca había tenido la curiosidad de probar algo distinto.

Ahora me pregunto ¿Dónde había estado todo este tiempo? Para empezar esta cosa parece adivinar lo que voy a escribir. Sus sugerencias son muy acertadas y me ahorra una buena cantidad de tiempo. Lo malo es que me esta haciendo algo flojo en la terminal.

La página web de Fish Shell dice “un shell de línea de comandos para los años 90s” así que solo tengo algunos 30 años de retraso, pero más vale tarde que nunca.

Todavía le estoy agarrando el modillo, pero en este artículo comentaré lo que le vaya descubriendo.

Convertir a fish en el shell por default.

Al principio no quería hacer un cambio muy drástico, quería conservar Bash por si había algún problema de compatibilidad o inesperado, pero quería que fish fuera el interprete de comandos por default en mi sesión de usuario.

Para lograrlo hay que agregar esto al archivo .bashrc de mi carpeta home.

if [[ $(ps --no-header --pid=$PPID --format=cmd) != "fish" && -z ${BASH_EXECUTION_STRING} ]]
then
    exec fish
fi

De esa forma, todas las terminales que abra en mi instalación de Manjaro iniciarán con Fish. Si quiero regresar a como estaba antes basta con borrar estas líneas del archivo y como si nada hubiera pasado.

fish shell listo y funcionando.

fish shell listo y funcionando.

Declarar un alias

Me di cuenta de inmediato de que mi alias de actualización de Manjaro no funcionaba en fish, así que tuve que aprender a agregar estos comandos personalizados.

# Definir un alias en el shell
alias rmi "rm -i"

# Definir un alias en el archivo de configuración
alias rmi="rm -i"

# Esto equivale a introducir la siguiente función:
function rmi
    rm -i $argv
end

# Luego, para guardarlo usamos funcsave:
funcsave rmi

Si teclean el comando fish_config podrán ver todos los alias declarados en la sección functions directamente en el navegador junto con otras opciones de configuración.

lista de funciones o alias declarados en fish.

lista de funciones o alias declarados en fish.

Para personalizar los mensajes de inicio de fish

En el video que les mencioné al principio aparecía el resumen clásico de la computadora al teclear la instrucción neofetch .

Bueno pues para ejecutar algo al momento de abrir la terminal hay que editar el archivo ~/.config/fish/config.fish

if status is-interactive
    # Commands to run in interactive sessions can go here
    neofetch
end

Y si esta vistoso, pero con el tiempo aburre. Digo ¿Qué tan seguido cambio mi equipo? Así que decidí probar algo nuevo.

¿Se acuerdan de la vaquita que muestra un mensaje? pues decidí mezclarlo con fortune que muestra citas como si fuera una galleta de la fortuna y como la mayoría de esos mensajes están en inglés, pues de una vez traducirlos al español.

Okey, parece demasiado, pero todo eso se puede resumir con esta instrucción.

fortune -s | trans -b :es | cowsay

 ____________________________________
/ Excusa BOFH # 15:                  \
|                                    |
\ anomalía de enrutamiento temporal /
 ------------------------------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

Y al final quedó así:

if status is-interactive
    # Commands to run in interactive sessions can go here
    fortune -s | trans -b :es | cowsay -f tux
end

Buscar en el historial

Como mencioné al principio, esta cosa parece adivinar lo que voy a escribir. Desde la primer letra aparece alguna sugerencia. Si no es la correcta, puedes buscar simplemente presionando la flecha arriba del teclado

O con el comando history

history search “búsqueda”

Regresar a Bash

Me pasó que tuve problemas para iniciar un entorno virtual de Python, me apareció un mensaje muy similar a este:

bin/activate (line 47): Unsupported use of '='. In fish, please use 'set VIRTUAL_ENV

Hay dos opciones. Regresar a Bash momentáneamente tecleando en la terminal bash y trabajando normalmente como si nada hubiera pasado o activar el entorno virtual de la siguiente forma:

source bin/activate.fish

Cambiar el navegador por default

El comando fish_config abre una ventana en el navegador por default. Pero el otro día me encontré con el problema de que abría el editor de texto en lugar del navegador. Así que tuve que revisar las variables de entorno y efectivamente había un problema.

$ printenv | grep BROWSER

BROWSER=/usr/bin/chromium

La variable BROWSER apuntaba a Chromium, mi navegador antiguo en lugar del nuevo y flamante Chrome así que para corregirlo en Manjaro hay que editar el archivo /etc/environment

#
# This file is parsed by pam_env module
#
# Syntax: simple "KEY=VAL" pairs on separate lines
#
LANG=es_MX.UTF-8
BROWSER=/usr/bin/google-chrome-stable

# Para poder hacer downgrade a los paquetes de Manjaro.
# export DOWNGRADE_FROM_ALA=1

Y eso es todo amigos, con estos pequeños ajustes me he sentido muy cómodo usando fish, hasta parezco “juaker“ usando la terminal.

¡Hasta la próxima aventura!

Enlaces.

Licensed under CC BY-NC-SA 4.0
Última actualización 12 nov. 2021 1112:00 CST
Todas las imágenes, nombres de productos y nombres de empresa o logotipos citados en esta página web son propiedad de sus respectivos propietarios.
Creado con Hugo
Tema Stack diseñado por Jimmy