Установить zsh без доступа root?

Возможно ли (и как)? Мне действительно нужно это для нескольких удаленных компьютеров, где у меня есть ssh-доступ (но нет доступа 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.