GNU/Linux >> Linux Esercitazione >  >> Linux

Installare zsh senza accesso root?

Se la macchina ha zsh su di essa, dovresti semplicemente eseguire zsh su una richiesta di scambio, se funziona puoi provare chsh per scambiare la tua shell (dovrebbe funzionare senza root) o quando ti connetti con ssh inserisci ssh -t hostname zsh per avviarlo automaticamente.


Puoi provare il chsh comando. Sei sicuro che zsh non sia installato sul computer distante? In caso contrario, puoi farlo (citato da zsh FAQ Sezione 1.7)

L'idea di base è usare exec per sostituire la shell corrente con zsh. Spesso puoi farlo in un file di login come .profile (se la tua shell è sh o ksh) o .login (se è csh). Assicurati di avere un modo per alterare il file (ad es. tramite FTP) prima di provarlo poiché exec è spesso piuttosto spietato.

Se hai zsh in una sottodirectory bin della tua home directory, inseriscilo in .profile:

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

o se la tua shell di login è csh o tcsh, inseriscila in .login:

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

(in ogni caso -l dice a zsh che è una shell di login).

Se vuoi verificare che funzioni prima di impegnarti, puoi fare in modo che la shell di login chieda se eseguire zsh. Il seguente lavoro per shell tipo Bourne:

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

e per shell simili a C-shell:

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

Non è una buona idea inserire questo (anche senza -l) in .cshrc, almeno senza alcuni test su cosa dovrebbe fare csh, poiché ciò causerà ogni istanza di csh si trasformerà in zsh e causerà script csh (sì, sfortunatamente alcune persone li scrivono) che non chiamano csh -f fallire. Se vuoi dire a xterm di eseguire zsh, cambia la variabile d'ambiente SHELL nel percorso completo di zsh nello stesso momento in cui esegui zsh (in effetti, questo è ragionevole per coerenza anche se non stai usando xterm). Se devi eseguire exec zsh dal tuo .cshrc, un minimo controllo di sicurezza è if ($?prompt) exec zsh.

Se desideri che la tua shell di login appaia nell'elenco dei processi come -zsh, puoi collegare zsh a -zsh (ad esempio tramite ln -s ~/bin/zsh ~/bin/-zsh) e modificare exec in exec -zsh. (Assicurati che -zsh sia nel tuo percorso.) Questo ha lo stesso effetto dell'opzione -l.

Nota a piè di pagina:se hai accesso root, assicurati che zsh vada in /etc/shells su tutte le macchine appropriate, inclusi i client NIS, o potresti avere problemi con l'FTP su quella macchina.


Scarica zsh con:

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

Puoi compilare tu stesso zsh, ad esempio:

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

e quindi avviarlo in modo esplicito o programmatico dal file di avvio della shell corrente (inserire exec $HOME/bin/zsh -l nel posto giusto).


Linux
  1. Come installare Oh My Zsh su Ubuntu

  2. Installa WordPress su un account utente come root

  3. Cronologia di Bash senza numeri di riga

  4. Come installare pacchetti in Linux (CentOS) senza utente root con gestione automatica delle dipendenze?

  5. Senza accesso root, esegui R con BLAS ottimizzato quando è collegato con BLAS di riferimento

HOWTO:eseguire Linux su Android senza root

Installazione di software su Linux senza privilegi di root

Come installare localmente .deb senza apt-get, dpkg o accesso root?

Come si accede a Webmin?

Consenti all'utente root di Linux l'accesso root mysql senza password

Linux:amministratori di sistema produttivi senza root (protezione della proprietà intellettuale)?