Возможно ли (и как)? Мне действительно нужно это для нескольких удаленных компьютеров, где у меня есть ssh-доступ (но нет доступа root).
Установить zsh без доступа root?
Ответ 1
Вы можете попробовать команду chsh
. Вы уверены, что zsh не установлен на удаленном компьютере? Если нет, вы можете это сделать (цитата из раздела zsh FAQ 1.7)
Основная идея - использовать exec для замены текущей оболочки на zsh. Часто вы можете сделать это в файле входа, таком как.profile (если ваша оболочка - sh или ksh) или.login (если это csh). Убедитесь, что у вас есть способ изменить файл (например, через FTP), прежде чем попробовать это, поскольку exec часто довольно неумолимо.
Если у вас есть zsh в подкаталоге bin вашего домашнего каталога, поместите это в.profile:
[ -f $HOME/bin/zsh ] && exec $HOME/bin/zsh -l
или если ваша оболочка входа - csh или tcsh, поместите это в.login:
if ( -f ~/bin/zsh ) exec ~/bin/zsh -l
(в каждом случае -l сообщает zsh, что это оболочка входа).
Если вы хотите проверить это, прежде чем приступить к нему, вы можете заставить оболочку login спросить, следует ли exec zsh. Следующая работа для снарядов Bourne -l:
[ -f $HOME/bin/zsh ] && {
echo "Type Y to run zsh: \c"
read line
[ "$line" = Y ] && exec $HOME/bin/zsh -l
}
и для C -s ад -l ike shells:
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 с:
wget -O zsh.tar.xz https://sourceforge.net/projects/zsh/files/latest/download
mkdir zsh && unxz zsh.tar.xz && tar -xvf zsh.tar -C zsh --strip-components 1
cd zsh
Вы можете скомпилировать zsh самостоятельно, например:
./configure --prefix=$HOME
make
make install
а затем запустите его явно или программно из текущего файла запуска оболочки (поместите exec $HOME/bin/zsh -l
в правильное место).
Ответ 3
Если у машины есть zsh, вам должно быть хорошо, чтобы просто выполнить zsh
в приглашении для обмена, если это работает, вы можете либо попробовать chsh
чтобы поменять вашу оболочку (должен работать без root), либо когда вы подключаетесь к ssh
put ssh -t hostname zsh
чтобы запустить его автоматически.
Ответ 4
Создайте каталог в своем каталоге учетных записей пользователей, распакуйте zsh и после этого используйте ./config
, make
и make install
.