2013-03-08 1 views

ответ

7

Вы можете попробовать команду chsh. Вы уверены, что zsh не установлен на удаленном компьютере? Если нет, вы можете сделать это (цитата из zsh FAQ Section 1.7)

Основная идея - использовать exec для замены текущей оболочки на zsh. Часто вы можете сделать это в файле входа, таком как .profile (если ваша оболочка sh или ksh) или .login (если это csh). Удостоверьтесь, что у вас есть способ изменить файл (например, через FTP), прежде чем попробовать это, поскольку exec часто довольно неумолимо.

Если у вас есть ЗШ в подкаталоге бункером вашего домашнего каталога, поместите это в .profile:

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

или если ваш Логин оболочки CSH или Tcsh, поместите это в .login:

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

(в каждом случае -l указывает zsh, это оболочка входа).

Если вы хотите проверить это, прежде чем совершать его, вы можете заставить оболочку входа в систему спросить, следует ли исполнять zsh. Следующая работа для Bourne-подобных оболочек:

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

и для C-оболочки типа снарядов:

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

Это не очень хорошая идея, чтобы поставить это (даже без -l) в .cshrc , по крайней мере, без каких-либо тестов на то, что должен делать csh, поскольку это вызовет каждый экземпляр csh, чтобы превратиться в zsh и вызовет сценарии csh (да, к сожалению, некоторые люди пишут эти данные), которые не вызывают csh -f потерпеть неудачу. Если вы хотите сообщить xterm о запуске zsh, измените переменную окружения SHELL на полный путь zsh одновременно с exec zsh (на самом деле это разумно для согласованности, даже если вы не используете xterm). Если вам нужно выполнить exec zsh из вашего .cshrc, минимальная проверка безопасности - если ($? Prompt) exec zsh.

Если вы хотите, чтобы ваша учетная запись отображалась в списке процессов как -zsh, вы можете связать zsh с -zsh (например, с помощью ln -s ~/bin/zsh ~/bin/-zsh) и сменить exec exec -zsh. (Убедитесь, что -zsh находится на вашем пути.) Это имеет тот же эффект, что и параметр -l.

Сноска: если у вас есть доступ к корню, убедитесь, что zsh входит в/etc/shells на всех соответствующих машинах, включая NIS-клиенты, или у вас могут возникнуть проблемы с FTP для этой машины.

2

Если машина имеет zsh на ней, вы должны быть в порядке, чтобы просто выполнить zsh в приглашении на обмен, если это работает, вы можете либо попробовать chsh, чтобы обменять вашу оболочку (должен работать без root), либо когда вы подключаетесь к ssh положил ssh -t hostname zsh, чтобы начать его автоматически.

-1

Создать каталог в каталоге учетной записи пользователя, распаковать zsh и после этого использовать ./configmake, и make install.

+1

Вопрос был о установке * без * root доступ. –

29

Скачать ЗШ с:

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 

Вы можете скомпилировать ЗШ себя, например:

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

, а затем запустить его в явном виде, либо программно из файла запуска вашей текущей оболочки (поместить exec $HOME/bin/zsh -l в правое пятно).

+0

В версии 5.2 префикс должен быть просто '--prefix = $ HOME', иначе он будет заканчиваться' $ HOME/bin/bin' – ilija139

+0

@ ilija139 Спасибо, исправлено. – Jens

+0

Только что заметил, что папка 'lib' также помещается в' $ HOME':/ Возможно, лучше всего установить в какую-либо другую папку и символически привязать ее к '$ HOME/bin' – ilija139