Можно ли включить файл в конфигурационный файл zsh? Как?

22

Я хотел бы иметь файл, например. f только с псевдонимами zsh (из соображений чистоты). Затем я хотел бы включить файл f в мой файл .zshrc , чтобы псевдонимы, определенные в f, были видны в .zshrc .

Является ли это возможным?

Если это так, я мог бы создать сценарий, например. my_alias( $my_alias ll 'ls -l') который добавляет псевдоним в файл f . Конечно я мог сделать

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

но это делает .zshrc одним большим беспорядком.

Кроме того, как это выглядит в Bash?

ОБНОВИТЬ

Если кто-то поделится моей идеей, это решение, спасибо 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
источник

Ответы:

20

.zshrcи .bashrcэто файлы сценариев, а не файлы конфигурации, так что вы «источник» файла псевдонима. В Zsh ( .zshrc) и Bash ( .bashrc) одинаково:

. my_alias

запустит my_aliasи оставит свои эффекты в одной среде с файлами RC, эффективно предоставляя вам псевдонимы в оболочке. Конечно, вы не ограничены псевдонимами. Я использую .shrcисходный код как для общего экспорта, так .bashrcи .zshrcдля функций и псевдонимов.

Подробнее о поиске см. В разделе « Различные способы выполнения сценария оболочки» .

phunehehe
источник
32

Вот как я делаю это в моем .zshrc:

if [ -f ~/.zsh/zshalias ]; then
    source ~/.zsh/zshalias
else
    print "404: ~/.zsh/zshalias not found."
fi
похлопывание
источник
Спасибо за хороший ответ, вы и phunehehe правы, но можно утвердить только один ответ, поэтому я решил дать его phunehehe, потому что он был первым :)
xliiv
15

Чтобы получить файл, если он существует в одной строке:

[ -f .aliases ] && source .aliases
Матье Наполи
источник
Чем это отличается от ответа Пэт ?
Джейсонвриан
1
То же самое, но с одним вкладышем. Я пришел из Google, и один лайнер был тем, что я искал (нашел его на форуме в то же время), поэтому я подумал, что я мог бы также поделиться этим;) Я бы не смог придумать это, как я я туп в баш
Матье Наполи
1

После установки о-мой-ЗШ последние строки из.zshrc являются:

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

Итак, у вас есть несколько альтернатив:

  • Добавить непосредственно в .zshrc
  • Создайте папку и добавьте в его пути в конце .zshrc: ZSH_CUSTOM=$HOME/Dropbox/.myzshconfig.
  • Используйте ~/.oh-my-zsh/customпапку и git clone git://github.com/yourusername/zsh_config.git .там.
  • С source/ точка оператора:

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

    -r FILEпроверьте, если существует, и разрешение на чтение предоставлено.

    В этом случае вы можете проверить $SHELLпользовательские bash и zsh, включая один и тот же файл.

Ссылка

Пабло А
источник
Спасибо за отличную идею Dropboxing
Ariful Haque