GNU/Linux >> Znalost Linux >  >> Linux

Instalovat zsh bez přístupu root?

Pokud je na stroji zsh, měli byste v pohodě spustit zsh na výzvu k výměně, pokud to funguje, můžete zkusit chsh pro výměnu vašeho shellu (mělo by fungovat bez root) nebo když se připojujete pomocí ssh zadejte ssh -t hostname zsh aby se spustil automaticky.


Můžete zkusit chsh příkaz. Jste si jisti, že zsh není nainstalován na vzdáleném počítači? Pokud ne, můžete to udělat (citováno ze zsh FAQ sekce 1.7)

Základní myšlenkou je použít exec k nahrazení aktuálního shellu zsh. Často to můžete udělat v přihlašovacím souboru, jako je .profile (pokud je váš shell sh nebo ksh) nebo .login (pokud je to csh). Než to zkusíte, ujistěte se, že máte nějaký způsob, jak soubor změnit (např. přes FTP), protože exec je často dost nemilosrdný.

Pokud máte zsh v podadresáři bin svého domovského adresáře, vložte jej do .profile:

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

nebo pokud je váš přihlašovací shell csh nebo tcsh, vložte toto do .login:

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

(v každém případě -l říká zsh, že se jedná o přihlašovací shell).

Pokud chcete zkontrolovat, zda to funguje, než se k tomu zavážete, můžete přimět přihlašovací shell, aby se zeptal, zda spustit zsh. Následující práce pro shelly podobné Bourneovi:

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

a pro shelly podobné C-shell:

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

Není dobrý nápad to vkládat (i bez -l) do .cshrc, alespoň bez nějakých testů toho, co má csh dělat, protože to způsobí každý instance csh se změní na zsh a způsobí csh skripty (ano, bohužel je někteří lidé píší), které nevolají csh -f neuspět. Pokud chcete říci xtermu, aby spustil zsh, změňte proměnnou prostředí SHELL na úplnou cestu zsh současně s spuštěním zsh (ve skutečnosti je to rozumné pro konzistenci, i když nepoužíváte xterm). Pokud musíte spustit zsh z vašeho .cshrc, minimální bezpečnostní kontrola je if ($?prompt) exec zsh.

Pokud chcete, aby se váš přihlašovací shell objevil v seznamu procesů jako -zsh, můžete propojit zsh s -zsh (např. pomocí ln -s ~/bin/zsh ~/bin/-zsh) a změnit exec na exec -zsh. (Ujistěte se, že -zsh je ve vaší cestě.) To má stejný účinek jako volba -l.

Poznámka pod čarou:pokud MÁTE přístup root, ujistěte se, že zsh jde do /etc/shells na všech příslušných počítačích, včetně klientů NIS, jinak můžete mít problémy s FTP na tomto počítači.


Stáhnout zsh pomocí:

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 si můžete zkompilovat sami, například:

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

a poté jej spusťte explicitně nebo programově ze spouštěcího souboru vašeho aktuálního shellu (zadejte exec $HOME/bin/zsh -l na správném místě).


Linux
  1. Je možné nainstalovat g++ na CentOS bez root?

  2. Jak mohu nainstalovat RPM, aniž bych byl root?

  3. Nainstalovat emacs bez sudo?

  1. Spusťte ifconfig bez sudo

  2. Instalace softwaru v systému Linux bez oprávnění root

  3. Jak mohu povolit jednomu uživateli su druhému, aniž bych povolil přístup root?

  1. Jak nainstalovat Oh My Zsh na Ubuntu

  2. Vazba na porty menší než 1024 bez přístupu root

  3. Povolit linuxovému root uživateli mysql root přístup bez hesla