2012-09-24 21 views
11

He visto a muchos hacer esto
autoload -Uz compinit
compinit

y otros hacen esto
autoload -U compinit
compinit -i

me gustaría saber la diferencia. ¿Cuál debo usar?zsh diferencia finalización

Respuesta

10

autoload, desde man zshbuiltins:

Las banderas -z y -k marcan la función que se carga automáticamente en la emulación nativa o ksh, como si fuera la opción KSH_AUTOLOAD definido o se establecieron, respectivamente.

La bandera -U se remonta: autoload es equivalente a function -u, que es equivalente a typeset -f. typeset, en pocas palabras, se utiliza para:

Establecer o mostrar los atributos y valores para los parámetros de la shell.

Cuando -f se utiliza en combinación con -U:

[-f causas bandera] Los nombres se refieren a funciones en lugar de parámetros. ... Los distintivos -u y -U hacen que la función se marque para cargar automáticamente; -U también causa que la expansión de alias se suprima cuando se carga la función.

compinit es la función de finalización de inicialización utilizado por compsys, el sistema de terminación Z-Shell 'nueva'. Ver man zshcompsys para más detalles.

La bandera -i se utiliza para:

para hacer caso omiso de compinit en silencio todos los archivos y directorios inseguros utilice la opción -i

En general, usted debe utilizar autoload -Uz, según this interesting read .

+2

* "- Uz"? Sí, eso es "lo correcto" [tm] casi siempre, así que no lo discutiré aquí * - meh, la parte que estaba buscando no se explica en el artículo – ThiefMaster