Возможно ли (и как)? Мне действительно нужно это для нескольких удаленных компьютеров, где у меня есть ssh-доступ (но нет доступа root).Установить zsh без доступа root?
ответ
Вы можете попробовать команду 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 для этой машины.
Если машина имеет zsh на ней, вы должны быть в порядке, чтобы просто выполнить zsh
в приглашении на обмен, если это работает, вы можете либо попробовать chsh
, чтобы обменять вашу оболочку (должен работать без root), либо когда вы подключаетесь к ssh
положил ssh -t hostname zsh
, чтобы начать его автоматически.
Создать каталог в каталоге учетной записи пользователя, распаковать zsh и после этого использовать ./config
make
, и make install
.
Скачать ЗШ с:
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
в правое пятно).
В версии 5.2 префикс должен быть просто '--prefix = $ HOME', иначе он будет заканчиваться' $ HOME/bin/bin' – ilija139
@ ilija139 Спасибо, исправлено. – Jens
Только что заметил, что папка 'lib' также помещается в' $ HOME':/ Возможно, лучше всего установить в какую-либо другую папку и символически привязать ее к '$ HOME/bin' – ilija139
Вопрос был о установке * без * root доступ. –