Friendly interactive shell
# Friendly interactive shell

Friendly interactive shell (abreviado como fish) es el nombre de una shell de Unix que pretende ser interactiva y amigable para el usuario, al contrario de otras shells. La meta de diseño de fish es dar al usuario un conjunto diverso de poderosas características de una manera fácil de descubrir, recordar y usar. fish es considerado un "shell exótica", ya que su sintaxis no deriva ni de una «Bourne shell» (ksh, bash, zsh) ni de alguna «C shell» (csh, tcsh). También, al contrario de otras shells, que desabilitan algunas características para cuidar los recursos del sistema, fish habilita todas las características por defecto.

## Otras características

* Completamiento avanzado de pestañas.
* Resaltado de sintaxis con amplia comprobación de errores.
* Soporte para X clipboard.
* Manejo inteligente de terminal basado en terminfo.
* Búsqueda en el historial de comandos.

La versión 2 añade:

* Autosugerencias
* 256 colores de terminal
* Configuración basada en la web
* Mejoras en el rendimiento (al disponer de más módulos integrados).

## Sintaxis

La sintaxis se asemeja a un shell compatible con POSIX (como Bash), pero se desvía en aspectos importantes en los que los creadores creen que el shell POSIX estaba mal diseñado.

### No hay subshell implícito

Algunas construcciones del lenguaje, como pipelines, funciones y bucles, se han implementado utilizando las llamadas subshells en otros lenguajes shell. Las subshells son simplemente programas hijos que ejecutan algunos comandos para la shell y luego salen. Desafortunadamente, este detalle de implementación suele tener el efecto secundario de que cualquier cambio de estado realizado en la subshell, como la asignación de variables, no se propaga a la shell principal, lo que puede sorprender al usuario. Fish nunca bifurca los llamados subshells; todos los builtins son siempre completamente funcionales.

### Ejemplo de asignación de variables

Este ejemplo de Bash no hace lo que parece: como el cuerpo del bucle es un subshell, la actualización de $found no es persistente.

Solución:

Fish no necesita una solución:

