Czy można dołączyć plik do pliku konfiguracyjnego zsh? W jaki sposób?

22

Chciałbym mieć plik np. f tylko z aliasami zsh (względy czystości). Następnie chciałbym obejmują f plik w moim .zshrc pliku, tak że aliasy zdefiniowane w f są widoczne w .zshrc .

Czy to możliwe?

Jeśli tak, mógłbym utworzyć skrypt np. my_alias( $my_alias ll 'ls -l'), który dołącza alias do pliku F. Oczywiście, że mogę

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

ale to czyni .zshrc jednym wielkim bałaganem.

Dodatkowo jak to wygląda w bash?

AKTUALIZACJA

Jeśli ktoś podziela mój pomysł, jest to rozwiązanie, dzięki 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
źródło

Odpowiedzi:

20

.zshrci .bashrcsą plikami skryptowymi, a nie plikami konfiguracyjnymi, więc „źródło” pliku aliasu. Zarówno w Zsh ( .zshrc), jak i Bash ( .bashrc):

. my_alias

uruchomi się my_aliasi pozostawi swoje efekty w tym samym środowisku z plikami RC, skutecznie dając aliasy w powłoce. Oczywiście nie jesteś ograniczony do aliasów. Używam .shrctego, który pochodzi zarówno z, jak .bashrci .zshrcdo wspólnego eksportu, funkcji i aliasów.

Aby uzyskać więcej informacji na temat pozyskiwania, zobacz Różne sposoby wykonywania skryptu powłoki .

phunehehe
źródło
32

Oto jak to zrobić w moim .zshrc:

if [ -f ~/.zsh/zshalias ]; then
    source ~/.zsh/zshalias
else
    print "404: ~/.zsh/zshalias not found."
fi
poklepać
źródło
Dzięki za dobrą odpowiedź, Ty i phunehehe masz rację, ale można zatwierdzić tylko jedną odpowiedź, więc zdecydowałem się udzielić phunehehe, bo był pierwszy :)
xliiv
15

Aby pobrać plik, jeśli istnieje w jednym wierszu:

[ -f .aliases ] && source .aliases
Matthieu Napoli
źródło
Jak to się różni od odpowiedzi Klepa ?
jasonwryan
1
Ta sama rzecz, ale jednowarstwowa. Pochodzę z Google'a i szukałem tego jednego linijki (znalazłem to na forum w tym samym czasie), więc pomyślałem, że równie dobrze mogę się tym podzielić;) Nie byłbym w stanie wymyślić tego, ponieważ jestem głupi w bash
Matthieu Napoli
1

Po zainstalowaniu oh-my-zsh ostatnie wiersze o.zshrc to:

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

Masz więc kilka alternatyw:

  • Dodaj bezpośrednio do .zshrc
  • Utwórz folder i dodać na swojej drodze na końcu .zshrc: ZSH_CUSTOM=$HOME/Dropbox/.myzshconfig.
  • Użyj ~/.oh-my-zsh/customfolderu i git clone git://github.com/yourusername/zsh_config.git .tam.
  • Z sourceoperatorem / kropka:

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

    -r FILEsprawdź, czy istnieje i czy przyznano uprawnienia do odczytu.

    W takim przypadku możesz sprawdzić $SHELLniestandardowe bash i zsh zawierające ten sam plik.

Odniesienie

Pablo A.
źródło
Dzięki za fajny pomysł na Dropboxing
Ariful Haque