Shells de Unix
Un Shell de Unix, en el sentido que usaré aquí, es un intérprete de línea de comandos que provee una interfaz para que el usuario opere sistemas Unix o Unix-like. A lo largo de los años surgieron varios shells con distintas características. Aquí comento brevemente sobre los más conocidos y dejo tips para configurar el shell que uso.
En el siguiente diagrama están los seis shells más populares organizados de forma que un shell de un nivel inferior extiende las funciones del shell de arriba. Shells de ramas distintas son incompatibles.
csh (C shell) sh (Bourne shell)
| / \
| | ksh (Korn shell)
| | |
tcsh (TC shell) bash zsh (Z shell)
Creado por Bill Joy cuando era estudiante en UC Berkeley; lanzado en 1978 como parte de BSD. Fue popular para scripting, ya que su sintaxis recuerda a C, pero es criticado por defectos en su implementación.
Tcsh es esencialmente C Shell con extras como tab completion, editor de comandos y mejor manejo del historial.
El shell tradicional desarrollado por Stephen Bourne en Bell Labs y lanzado en 1977. Fue el shell por defecto en Unix7 y versiones más recientes aún se usan mucho hoy.
Escrito por Brian Fox para el proyecto GNU; lanzado en 1989 para sustituir a Bourne Shell y añadir varias funcionalidades. Muy usado por ser el shell por defecto en muchas distros Linux y en macOS.
Desarrollado por David Korn en AT&T Bell Labs y lanzado en 1983. Muy popular por ser totalmente compatible con Bourne Shell y traer varias funciones más, algunas tomadas de C Shell.
Escrito en 1990 por Paul Falstad (Universidad de Princeton), es el shell más completo de esta lista. Puede considerarse una extensión de Bourne Shell con mejoras basadas en
bash,ksh,tcshy además funcionalidades propias, incluido corrector ortográfico.
Como Zsh es mi shell favorito, escribiré más sobre su instalación y configuración (en Arch Linux).
En
/etc/shells, verifica la lista de shells instalados. Si zsh no aparece, instálalo.$ sudo pacman -S zshPrueba la instalación y configura opciones básicas
$ zshHaz Zsh tu shell por defecto (aplica tras nuevo login).
$ chsh -s $(which zsh)Edita el archivo principal de configuración,
~/.zshrc.Una forma fácil es con Oh My ZShell:
git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc chsh -s /bin/zshDejo una copia de mis configuraciones en https://github.com/jbsilva/dotfiles.
Enlaces
- Comentarios: http://linuxfinances.info/info/unixshells.html
- Tabla comparativa: http://www.faqs.org/faqs/unix-faq/shell/shell-differences/
- Arch Wiki - Zsh: https://wiki.archlinux.org/index.php/Zsh
- Personalización de varios shells: http://www.understudy.net/custom.html
- Diferencias: http://www.softlab.ntua.gr/facilities/documentation/unix/shelldiff.html
- Comentarios sobre shell y scripts: http://faculty.plattsburgh.edu/jan.plaza/computing/help/shells.html
- Zsh - FAQ oficial: http://zsh.sourceforge.net/FAQ/zshfaq01.html
- Zsh Lovers - http://grml.org/zsh/zsh-lovers.html
- Oh My Zshell (framework) - https://github.com/robbyrussell/oh-my-zsh
- ZSH Wiki: http://zshwiki.org