¿Es posible incluir el archivo en el archivo de configuración de zsh? ¿Cómo?

22

Me gustaría tener un archivo, por ejemplo. f con solo alias zsh (razones de pureza). Luego me gustaría incluir el archivo f en mi archivo .zshrc , para que los alias definidos en f sean visibles en .zshrc .

¿Es posible?

Si es así, podría crear un script, por ejemplo. my_alias( $my_alias ll 'ls -l') que agrega alias al archivo f . Por supuesto que podría hacer

$echo {alias command} >> ~/.zshrc

pero esto hace que .zshrc sea un gran desastre.

Además, ¿cómo se ve en bash?

ACTUALIZAR

Si alguien comparte mi idea, esta es la solución, gracias a phunehehe:

# source aliases
ALIASFILE=~/.aliasesrc
source $ALIASFILE
function add_alias() {
    if [[ -z $1 || -z $2 || $# -gt 2 ]]; then
        echo usage:
        echo "\t\$$0 ll 'ls -l'"
    else
        echo "alias $1='$2'" >> $ALIASFILE
        echo "alias ADDED to $ALIASFILE"
    fi
}
xliiv
fuente

Respuestas:

20

.zshrcy .bashrcson archivos de script, no archivos de configuración, por lo que "obtiene" el archivo de alias. En Zsh ( .zshrc) y Bash ( .bashrc) por igual:

. my_alias

se ejecutará my_aliasy dejará sus efectos en el mismo entorno con los archivos RC, lo que le dará efectivamente los alias en el shell. Por supuesto, tampoco estás limitado a alias. Utilizo uno .shrcque proviene de ambos .bashrcy .zshrcpara exportaciones, funciones y alias comunes.

Para obtener más información sobre el abastecimiento, consulte Diferentes formas de ejecutar un script de shell .

phunehehe
fuente
32

Así es como lo hago en mi .zshrc:

if [ -f ~/.zsh/zshalias ]; then
    source ~/.zsh/zshalias
else
    print "404: ~/.zsh/zshalias not found."
fi
palmadita
fuente
Gracias por la buena respuesta, y phunehehe son correctos, pero es sólo posible aprobar una respuesta, así que decidí darle a phunehehe robaba era primero :)
xliiv
15

Para obtener un archivo si existe en una línea:

[ -f .aliases ] && source .aliases
Matthieu Napoli
fuente
¿Cómo es esto diferente a la respuesta de Pat ?
jasonwryan
1
Lo mismo pero de una sola línea. Vengo de google y el único trazador de líneas era lo que estaba buscando (lo encontré en un foro al mismo tiempo), así que pensé que también podría compartirlo;) No habría sido capaz de encontrarlo ya que soy tonto de fiesta
Matthieu Napoli
1

Después de instalar oh-my-zsh, las últimas líneas de.zshrc son:

# Set personal aliases, overriding those provided by oh-my-zsh libs,
# plugins, and themes. Aliases can be placed here, though oh-my-zsh
# users are encouraged to define aliases within the ZSH_CUSTOM folder.  
# For a full list of active aliases, run `alias`.
# 
# Example aliases
# alias zshconfig="mate ~/.zshrc"
# alias ohmyzsh="mate ~/.oh-my-zsh"

Entonces tienes algunas alternativas:

  • Agregar directamente a .zshrc
  • Cree una carpeta y agregue en su ruta al final de .zshrc:ZSH_CUSTOM=$HOME/Dropbox/.myzshconfig .
  • Usa la ~/.oh-my-zsh/customcarpeta y git clone git://github.com/yourusername/zsh_config.git .allí.
  • Con source/ dot operador:

    # CUSTOMIZATION FOR ZSH
    if [ -r ~/Dropbox/.myzshrc ]; then
        source ~/Dropbox/.myzshrc
    fi

    -r FILEcompruebe si existe y se concede permiso de lectura.

    En este caso, puede seleccionar $SHELLbash y zsh personalizados, incluido el mismo archivo.

Referencia

Pablo A
fuente
Gracias por la buena idea de Dropboxing
Ariful Haque