2013-03-08 18 views

Odpowiedz

7

Możesz wypróbować polecenie chsh. Czy na pewno Zsh nie jest zainstalowany na odległym komputerze? Jeśli nie, możesz to zrobić (cytowane z zsh FAQ Section 1.7)

Podstawową ideą jest użycie exec, aby zastąpić bieżącą powłokę zsh. Często możesz to zrobić w pliku logowania, takim jak .profile (jeśli twoja powłoka to sh lub ksh) lub .login (jeśli jest to csh). Upewnij się, że masz jakiś sposób na zmianę pliku (np. Przez FTP), zanim spróbujesz tego, ponieważ exec jest często raczej pamiętliwy.

Jeśli masz zsh w podkatalogu bin katalogu domowym, umieścić to w .profile:

[ -f $HOME/bin/zsh ] && exec $HOME/bin/zsh -l 

lub jeśli Twój login shell jest csh lub tcsh, umieścić to w .login:

if (-f ~/bin/zsh) exec ~/bin/zsh -l 

(w każdym przypadku -l mówi, że zsh jest powłoką logowania).

Jeśli chcesz sprawdzić to, zanim się do niego przyłączysz, możesz sprawić, by powłoka logowania zadawała pytanie, czy wykonać polecenie zsh. Poniższa praca dla Bourne podobnych muszli:

[ -f $HOME/bin/zsh ] && { 
     echo "Type Y to run zsh: \c" 
     read line 
     [ "$line" = Y ] && exec $HOME/bin/zsh -l 
} 

i C-shell-jak muszli:

if (-f ~/bin/zsh) then 
     echo -n "Type Y to run zsh: " 
     if ("$<" == Y) exec ~/bin/zsh -l 
endif 

To nie jest dobry pomysł, aby umieścić to (nawet bez -l) do .cshrc , przynajmniej bez testów na to, co powinien zrobić csh, ponieważ spowoduje to, że każda instancja csh zmieni się w zsh i wywoła skrypty csh (tak, niestety niektórzy to piszą), którzy nie nazywają się csh -f nie zdać. Jeśli chcesz, aby xterm uruchamiał zsh, zmień zmienną środowiskową SHELL na pełną ścieżkę zsh w tym samym czasie, co exec zsh (w rzeczywistości jest to rozsądne ze względu na spójność, nawet jeśli nie używasz xterma). Jeśli musisz wykonać komendę zsh z twojego .cshrc, minimalna kontrola bezpieczeństwa to: ($? Prompt) exec zsh.

Jeśli chcesz, aby twoja powłoka logowania pojawiła się na liście procesów jako -zsh, możesz połączyć zsh z -zsh (np. Przez ln -s ~/bin/zsh ~/bin/-zsh) i zmienić exec na exec -zsh. (Upewnij się, że -zsh jest na twojej ścieżce.) Ma to taki sam efekt jak opcja -l.

Przypis: jeśli masz uprawnienia roota, upewnij się, że zsh wchodzi w/etc/shells na wszystkich odpowiednich komputerach, w tym klientach NIS, lub możesz mieć problemy z FTP na tym komputerze.

2

Jeśli na komputerze jest włączony zsh, powinieneś być w porządku po prostu wykonać polecenie zsh w zachęcie do zamiany, jeśli to działa, możesz spróbować przekonwertować swoją powłokę na wersję chsh (powinna działać bez uprawnień roota) lub podczas łączenia się z ssh wstaw ssh -t hostname zsh, aby uruchomić go automatycznie.

-1

Utwórz katalog w swoim katalogu kont użytkowników, rozpakuj zsh, a następnie użyj ./config, make i make install.

+1

Pytanie dotyczyło instalacji * bez * uprawnień administratora. –

29

Pobierz zsh z:

wget -O zsh.tar.gz https://sourceforge.net/projects/zsh/files/latest/download 
mkdir zsh && tar -xvzf zsh.tar.gz -C zsh --strip-components 1 
cd zsh 

można skompilować zsh siebie, na przykład:

./configure --prefix=$HOME 
make 
make install 

a następnie uruchomić go jawnie, lub programowo z pliku startowego Twojego bieżącego powłoki (umieścić exec $HOME/bin/zsh -l w właściwe miejsce).

+0

W wersji 5.2 przedrostek powinien być po prostu '--prefix = $ HOME', w przeciwnym razie zakończy się na' $ HOME/bin/bin' – ilija139

+0

@ ilija139 Dzięki, poprawione. – Jens

+0

Po prostu zauważyłem, że folder 'lib' jest również umieszczony w' $ HOME':/ Może najlepiej zainstalować w innym folderze i dowiązać symbolicznie do '$ HOME/bin' – ilija139

Powiązane problemy