Est-il possible d'inclure un fichier dans le fichier de configuration de zsh? Comment?

22

J'aimerais avoir un fichier par exemple. f avec uniquement des alias zsh (raisons de pureté). Ensuite, j'aimerais inclure le fichier f dans mon fichier .zshrc , afin que les alias définis dans f soient visibles dans .zshrc .

C'est possible?

Si c'est le cas, je pourrais créer un script par exemple. my_alias( $my_alias ll 'ls -l') qui ajoute un alias au fichier f . Bien sûr, je pourrais faire

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

mais cela fait de .zshrc un gros gâchis.

De plus, à quoi ressemble-t-il dans bash?

MISE À JOUR

Si quelqu'un partage mon idée, c'est une solution, grâce à 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
la source

Réponses:

20

.zshrcet .bashrcsont des fichiers de script, pas des fichiers de configuration, donc vous "source" le fichier d'alias. Dans Zsh ( .zshrc) et Bash ( .bashrc):

. my_alias

s'exécutera my_aliaset laissera ses effets dans le même environnement que les fichiers RC, vous donnant effectivement les alias dans le shell. Bien sûr, vous n'êtes pas non plus limité aux alias. J'utilise un .shrcqui provient des deux .bashrcet .zshrcpour les exportations, fonctions et alias communs.

Pour plus d'informations sur le sourcing, voir Différentes façons d'exécuter un script shell .

phunehehe
la source
32

Voici comment je le fais dans mon .zshrc:

if [ -f ~/.zsh/zshalias ]; then
    source ~/.zsh/zshalias
else
    print "404: ~/.zsh/zshalias not found."
fi
tapoter
la source
Merci pour la bonne réponse, vous et phunehehe avez raison, mais il n'est possible d'approuver qu'une seule réponse, j'ai donc décidé de la donner à phunehehe car il était le premier :)
xliiv
15

Pour source un fichier s'il existe sur une seule ligne:

[ -f .aliases ] && source .aliases
Matthieu Napoli
la source
En quoi est-ce différent de la réponse de pat ?
jasonwryan
1
Même chose, mais une ligne. Je suis venu de google et le seul liner était ce que je cherchais (je l'ai trouvé sur un forum en même temps) alors j'ai pensé que je pourrais aussi bien le partager;) je n'aurais pas pu le proposer car je suis stupide en bash
Matthieu Napoli
1

Après avoir installé oh-my-zsh, les dernières lignes de.zshrc sont:

# 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"

Vous avez donc quelques alternatives:

  • Ajouter directement à .zshrc
  • Créez un dossier et ajouter à son chemin à la fin de .zshrc: ZSH_CUSTOM=$HOME/Dropbox/.myzshconfig.
  • Utilisez le ~/.oh-my-zsh/customdossier et git clone git://github.com/yourusername/zsh_config.git .là.
  • Avec l' sourceopérateur / dot:

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

    -r FILEvérifier s'il existe et que l' autorisation de lecture est accordée.

    Dans ce cas, vous pouvez vérifier que $SHELLbash et zsh sont personnalisés, y compris le même fichier.

Référence

Pablo A
la source
Merci pour la belle idée de Dropboxing it
Ariful Haque