Zsh (Español)

Este artículo o sección necesita ser
traducido
.
Notas:
Este artículo no se actualiza desde 2015 (Discusión en
Talk:Zsh (Español)#
)
Esta traducción de
Zsh
fue revisada el
2015-07-25
. Si existen
cambios
puede
actualizarla
o avisar al
equipo de traducción
.
Zsh
es un potente intérprete de comandos que puede funcionar como shell interactiva y como intérprete de lenguaje de scripting. Aún siendo compatible con
Bash
(no por defecto, solo si se ejecuta
emulate sh
), ofrece numerosas ventajas como:
Eficiencia
Completado de tabulador mejorado
Expansión de nombres de fichero mejorada
Manejo de arrays mejorado
Totalmente personalizable
El
FAQ de Zsh
aporta más razones para usar Zsh.
Instalación
Antes de comenzar, puede que el usuario quiera comprobar cuál es la shell que está siendo usada:
$ echo $SHELL
Instale
el paquete
zsh
. Para definiciones de completado adicionales, instale también el paquete
zsh-completions
.
Configuración Inicial
Asegúrese  de que Zsh ha sido instalado correctamente ejecutando lo siguiente en la terminal:
$ zsh
Debería ver
zsh-newuser-install
, que le dirigirá a través de la configuración básica. Si prefiere saltarse esto, presione
q
. Si no lo vió, puede invocarlo manualmente con:
$ zsh /usr/share/zsh/functions/Newuser/zsh-newuser-install -f
Hacer que Zsh sea la shell por defecto
Consulte
Command-line shell (Español)#Cambiar su intérprete de línea de órdenes predeterminado
.
Sugerencia
Si va a remplazar
bash
, puede que quiera mover parte del código de
~/.bashrc
a
~/.zshrc
(p. ej: la definición del prompt y los
alias
y de
~/.bash_profile
a
~/.zprofile
(p. ej:Xinitrc (Español)
Archivos de configuración
Al iniciar Zsh, Este cargará información de los siguiente archivos en el siguiente orden por defecto:
/etc/zsh/zshenv
Este archivo debería contener comandos para establecer la
ruta de búsqueda de comandos
global y otras variables de entorno a nivel de todo el sistema; no debería contener comandos que produzcan salidas por consola o que asuma que la shell está conectada a una tty.
~/.zshenv
Similar a
/etc/zsh/zshenv
pero dedicada exclusivamente a cada usuario. Se emplea normalmente para establecer variables de entorno que sean de utilidad.
/etc/zsh/zprofile
Este es un archivo de configuración global, Se cargará al iniciar la sesión. Usado por norma general para ejecutar algunos comandos generales en el inicio de sesión. Por favor, dése cuenta de que en Arch Linux, por defecto contiene
una linea
que carga
/etc/profile
, véase
abajo
para más detalles.
/etc/profile
Este archivo debería ser cargado por todas las shell Bourne-Compatibles al iniciar sesión: establece un entorno y configuraciones especificas de aplicación (
/etc/profile.d/*.sh
). Dése cuenta que en Arch Linux, Zsh también cargará esto por defecto.
~/.zprofile
Este se emplea generalmente para la ejecución automática de scripts de usuario al iniciar sesión.
/etc/zsh/zshrc
Archivo de configuración global, se cargará cuando se inicie una shell interactiva.
~/.zshrc
Archivo de configuración principal de usuario, se cargará cuando se inicie una shell interactiva.
/etc/zsh/zlogin
Archivo de configuración global, se cargará al finalizar el proceso de inicio de sesión en una shell de inicio de sesión.
~/.zlogin
Lo mismo que
/etc/zsh/zlogin
pero para cada usuario.
/etc/zsh/zlogout
Archivo de configuración global, se cargará cuando se cierra la sesión en la shell.
~/.zlogout
Lo mismo que
/etc/zsh/zlogout
pero para cada usuario.
Nota
/etc/profile
no forma parte de la lista normal de de ficheros para ejecutar en el arranque de Zsh, pero es cargado desde
/etc/zsh/zprofile
en el paquete
zsh
. Los usuarios deberían tener en cuenta que
/etc/profile
establece la variable
$PATH
que sobrescribirá cualquier otra variable
$PATH
establecida en
~/.zshenv
. Para prevenir esto, por favor, establezca la variable
$PATH
en
~/.zshrc
. (No se recomienda reemplazar la
línea
por defecto en
/etc/zsh/zprofile
por otra cosa, ello romperá la integridad de otros paquetes que proporcionan algunos scripts en
/etc/profile.d
)
Configurar Zsh
Aunque Zsh es usable sin más, es seguro que no estará configurado al gusto de la mayoría de los usuarios, pero dado el gran espectro de posibles configuraciones disponibles para Zsh, configurar Zsh puede ser una experiencia abrumadora y que consuma gran cantidad de tiempo.
Fichero .zshrc minimalista
Incluido más abajo se encuentra un archivo de configuración de muestra, proporciona un conjunto bastante bueno de opciones por defecto así como ejemplos de las muchas maneras en las que Zsh se puede personalizar. Para poder usar esta configuración guárdelo como un archivo que se llame
.zshrc
.  Aplique los cambios sin necesidad de reiniciar la sesión ejecutando:
$ source ~/.zshrc
Este es un ejemplo de archivo
.zshrc
:
~/.zshrc
autoload -U compinit promptinit
compinit
promptinit

# Esto establecerá el prompt por defecto al tema walters
prompt walters
Configurar el $PATH
Información de como establecer la ruta del sistema por cada usuario en zsh puede encontrarse aquí:
https://zsh.sourceforge.net/Guide/zshguide02.html#l24
En resumen, coloque lo siguiente en
~/.zshenv
:
~/.zshenv
typeset -U path
path=(~/bin /otras/cosas/en/la/ruta $path)
Véase también la nota en
#Archivos de configuración
.
Autocompletado de comandos
Quizás la característica más llamativa de Zsh es sus capacidades de autocompletado avanzadas. Como mínimo,active el autocompletado en
.zshrc
. Para habilitar el autocompletado, añada lo siguiente a su
~/.zshrc
:
~/.zshrc
autoload -U compinit
compinit
La configuración de arriba incluye autocompletado para ssh/scp/sftp pero para que esta característica funcione, los usuarios deben evitar que ssh haga hashing de los hostnames en
~/.ssh/known_hosts
.
Advertencia
Esto hace al ordenador vulnerable
ataques "Island-hopping"
. Con todo ello, comente la siguiente línea o establezca su valor a
no
:
/etc/ssh/ssh_config
#HashKnownHosts yes
Y mueva
~/.ssh/known_hosts
a otra parte de manera que ssh cree uno nuevo sin hostnames hasheados (evidentemente, los hosts conocidos anteriores se perderán). Para más información, vea el README de ssh para
hashed-hosts
.
Para autocompletado mediante flechas de teclados, añada lo siguiente a:
~/.zshrc
zstyle ':completion:*' menu select
Para activar el menú, pulse tab dos veces.
Para el autocompletado de parámetros de comandos en alias, añada lo siguiente a:
~/.zshrc
setopt completealiases
El gancho de "comando no encontrado"
Vea
Pkgfile (Español)#Orden no encontrada
.
Prevenir líneas duplicadas en el historial
Para ignorar líneas duplicadas en el historial, use lo siguiente:
~/.zshrc
setopt HIST_IGNORE_DUPS
Para eliminar duplicadas existentes en el historial , ejecute:
$ awk -i inplace '!x[$0]++' ~/.zsh_history
Asociaciones de teclas
Zsh no usa readline, en su lugar usa su propio y más potente zle. No lee
/etc/inputrc
o
~/.inputrc
.
Zle tien un modo
emacs
y un modo
vi
. Por defecto, trata de adivinar el modo de la variable de entorno
$EDITOR
.  Si esta vacía, usará emacs por defecto. Cambie esto con
bindkey -v
o
bindkey -e
.
Vea también
zshwiki: bindkeys
.
Asociar combinaciones de teclas con aplicaciones ncurses
Puede asociarse una aplicación ncurses a una combinación de teclas, pero no aceptará interacciones. Use la variable
BUFFER
para que funcione. El siguiente ejemplo permite a los usuarios abrir ncmpcpp usando
Alt+\
:
~/.zshrc
ncmpcppShow() { BUFFER="ncmpcpp"; zle accept-line; }
zle -N ncmpcppShow
bindkey '^[\' ncmpcppShow
Otra forma de asociar una aplicación ncurses
Este método mantendrá todo lo que haya introducido en la línea antes de llamar a la aplicación
~/.zshrc
ncmpcppShow() { ncmpcpp <$TTY; zle redisplay; }
zle -N ncmpcppShow
bindkey '^[\' ncmpcppShow
Asociaciones de teclas de gestor de archivos
Asociaciones de teclas al estilo de los gestores de archivos gráficos pueden ser muy útiles. El primero deja ir hacia atrás en el historial de directorios (
Alt+Left
), El segundo deja al usuario ir hacia el directorio padre (
Alt+Up
). Además de eso muestran el contenido del directorio.
~/.zshrc
cdUndoKey() {
  popd      > /dev/null
  zle       reset-prompt
  echo
  ls
  echo
}

cdParentKey() {
  pushd .. > /dev/null
  zle      reset-prompt
  echo
  ls
  echo
}

zle -N                 cdParentKey
zle -N                 cdUndoKey
bindkey '^[[1;3A'      cdParentKey
bindkey '^[[1;3D'      cdUndoKey
Búsqueda en el historial
Añada estas líneas a .zshrc
~/.zshrc
[[ -n "${key[PageUp]}"   ]]  && bindkey  "${key[PageUp]}"    history-beginning-search-backward
[[ -n "${key[PageDown]}" ]]  && bindkey  "${key[PageDown]}"  history-beginning-search-forward
Haciendo esto, solo comandos anteriores que comiencen con la entrada actual se mostrarán.
Prompts
Existe una forma rápida y fácil de establecer un prompt con colores en Zsh. Asegúrese que el prompt está establecido para autocargarse en
.zshrc
. Esto puede hacerse añadiendo las siguientes líneas:
~/.zshrc
autoload -U promptinit
promptinit
Prompts disponibles se pueden lista ejecutando el comando:
$ prompt -l
Por ejemplo, Para usar el prompt
walters
, introduzca:
$ prompt walters
Para previsualizar los temas disponibles, use el comando:
$ prompt -p
Personalizando el prompt
Para usuarios no satisfechos con los prompts mencionados arriba (o que quieran expandir sus capacidades), Zsh ofrece la posibilidad de construir un prompt personalizado. Zsh soporta el tradicional prompt a la izquierda, así como un prompt a la derecha. Personalízelo usando
PROMPT=
con las siguiente variables:
Vea
Prompt Expansion
para una lista completa de variables de prompt y subcadenas condicionales.
Colores
Zsh establece colores de manera diferente a
Bash
. Añada
autoload -U colors && colors
antes de
PROMPT=
en
.zshrc
para usarlos. Normalmente querrá ponerlos dentro de
%{ [...] %}
de manera que el cursor no se mueva.
$fg[color]
establecerá el color del texto (rojo, verde, azul, etc. - Si no encuentra el color introducido, volverá al formato anterior)
Comando
Descripción
%F{color} [...] %f
tiene el mismo efecto que el anterior, sin tener que escribir tanto. Puede también añadir un número como prefijo a F en su lugar.
$fg_no_bold[color]
establece el texto al color sin negrita.
$fg_bold[color]
establece el texto al color con negrita.
$reset_color
resetea el color del texto al color por defecto. No resetea la negrita. usa
%b
to para resetear la negrita. Ahorra teclear si tan solo es
%f
.
%K{color} [...] %k
Establece el color de fondo. El mismo color que el color del texto sin negrita. Añadir un número de un solo dígito como prefijo hace que el fondo negro.
Posibles colores
black
o
0
red
o
1
green
o
2
yellow
o
3
blue
o
4
magenta
o
5
cyan
o
6
white
o
7
Nota
El texto en negrita no usa necesariamente los mismo colores que el texto normal. Por ejemplo,
$fg['yellow']
parece marrón o un amarillo muy oscuro, mientras que
$fg_no_bold['yellow']
parece como un amarillo normal o brillante.
Ejemplo
Este es un ejemplo de un prompt de dos lados:
PROMPT="%{$fg[red]%}%n%{$reset_color%}@%{$fg[blue]%}%m %{$fg_no_bold[yellow]%}%1~ %{$reset_color%}%#"
RPROMPT="[%{$fg_no_bold[yellow]%}%?%{$reset_color%}]"
Y así es como se muestra:
username@host ~ %                                                         [0]
Dirstack
Zsh puede configurarse para recordar los DIRSTACKSIZE últimos directorio visitados. Esto puede usarse para hacer
cd
a ellos rápidamente. Tiene que añadir algunas lineas a su archivo de configuración:
.zshrc
DIRSTACKFILE="$HOME/.cache/zsh/dirs"
if [[ -f $DIRSTACKFILE ]] && [[ $#dirstack -eq 0 ]]; then
  dirstack=( ${(f)"$(< $DIRSTACKFILE)"} )
  [[ -d $dirstack[1] ]] && cd $dirstack[1]
fi
chpwd() {
  print -l $PWD ${(u)dirstack} >$DIRSTACKFILE
}

DIRSTACKSIZE=20

setopt autopushd pushdsilent pushdtohome

## Elimina las entradas duplicadas
setopt pushdignoredups

## Esto revierte los operadores +/-.
setopt pushdminus
Ahora use
dirs -v
Para imprimir el dirstack. Use
cd -<NUM>
para volver a un directorio ya visitado. Use el autocompletado después del guión. Esto demuestra ser muy útil si se usa en conjunción con el menú de autocompletado.
Comado de ayuda
Al contrario que
bash
,
zsh
no habilita un comando de ayuda integrado
help
. Para usar
help
en zsh, añada lo siguiente a su archivo
zshrc
:
autoload -U run-help
autoload run-help-git
autoload run-help-svn
autoload run-help-svk
unalias run-help
alias help=run-help
Resaltado de sintaxis estilo Fish
Fish
provee con un resalto de sintaxis para la shell muy potente. Para usarlo en fish, puede instalar
zsh-syntax-highlighting
desde los repositorios oficiales y añadir lo siguiente a su zshrc:
source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
Archivos .zshrc de muestra
Hay un paquete en los repositorios oficiales llamado
grml-zsh-config
que viene de
https://grml.org/zsh
y provee con un archivo zshrc que incluye un montón de ajustes para Zshell. Esta es la configuración por defecto para
los lanzamientos de ISOs mensuales
.
Configuración básica, con prompt dinámico e información extra en el título de la ventana =>
https://github.com/MrElendig/dotfiles-alice/blob/master/.zshrc
;
https://github.com/slashbeast/conf-mgmt/blob/master/roles/home_files/files/DOTzshrc
[
enlace roto
2025-08-16]
- zshrc con múltiples características, asegúrese de leer los comentarios. Características destacables: función de confirmación para asegurarse de que el usuario quiere realmente apagar, reiniciar o hibernar el ordenar, soporte para GIT en el prompt (hecho sin vcsinfo), completado de tabulador con menú, mostrar el comando ejecutado en la barra de título de la ventana y más.
Frameworks de configuración
oh-my-zsh
es un framework popular, desarrollado por la comunidad  para gestionar su configuración de zsh. Viene equipado con un montón de funciones útiles, helpers, plugins, temas.
Prezto - Instantly Awesome Zsh
(disponible en AUR como
prezto-git
AUR
) es un framework de configuración para Zsh. Viene con módulos, enriqueciendo el entorno de la interfaz de línea de comandos con valores por defecto seguros, alias, funciones, automcompletado, y temas para el prompt.
Antigen
(disponible en AUR como
antigen-git
AUR
)  - Un gestor de plugins para zsh, inspirado en oh-my-zsh y vundle.
Autoinicio de aplicaciones
Nota
El valor por defecto de
$ZDOTDIR
es
$HOME
.
Zsh siempre executa
/etc/zsh/zshenv
y
$ZDOTDIR/.zshenv
así que no cargue en exceso estos archivos.
Si la shell es una shell de inicio de sesión, los comandos son leídos desde
/etc/profile
y después desde
$ZDOTDIR/.zprofile
. Entonces, Si la shell es interactiva, los comando son leídos desde
/etc/zsh/zshrc
y luego desde
$ZDOTDIR/.zshrc
. Finalmente, si la shell es una shell de inicio de sesión,
/etc/zsh/zlogin
y
$ZDOTDIR/.zlogin
son leídos.
Vea tambiénla sección
STARTUP/SHUTDOWN FILES
de
zsh(1)
.
Rehash persistente
Típicamente, compinit no encontrará de manera automática nuevos ejecutables en el $PATH. Por ejemplo, después de instalar un nuevo paquete, los ficheros en  /usr/bin no sería inmediata o automáticamente incluidos en el autocompletado. Por lo tanto, tener estos nuevos ejecutables incluidos, uno ejecutaría:
$ rehash
Este 'rehash' puede establecerse para que se ejecute de forma automática. Simplemente incluyalo siguiente en su
zshrc
:
~/.zshrc
zstyle ':completion:*' rehash true
Nota
Este hack fue encontrado en un PR para Oh My Zsh
[1]
.
Desinstalación
Cambie la shell por defecto antes de eliminar el paquete
zsh
.
Advertencia
El fallo en seguir el procedimiento más abajo puede derivar en que el usuario no tengo acceso a una shell funcional.
Ejecute el siguiente comando:
$ chsh -s /bin/bash
user
Úselo por cada usuario con
zsh
establecida como su shell de inicio de sesión (incluyendo root si fuera necesario). Una vez hecho, el paquete
zsh
puede eliminarse.
Alternativamente, cambie la shell por defecto a Bash editando
/etc/passwd
como root.
Advertencia
Se recomienda encarecidamente usar
vipw
al editar
/etc/passwd
ya que ayuda a prevenir entradas invalidad y/o errores de sintaxis.
Por ejemplo, cambie lo siguiente:
username
:x:1000:1000:
Full Name
,,,:/home/
username
:/bin/zsh
por esto:
username
:x:1000:1000:
Full Name
,,,:/home/
username
:/bin/bash
Vea también
Guía de usuario para Zsh (Inglés)
El manual de Z Shell
(diferentes formas disponibles
aquí (Inglés)
)
FAQ Zsh (Inglés)
zsh-lovers(1)
(Esto está disponible también como
zsh-lovers
en los repositorios oficiales)
Zsh Wiki (Inglés)
Gentoo Wiki: Zsh/HOWTO (Inglés)
Bash2Zsh Tarjetas de referencia ( (Inglés))