GNU/Linux >> LINUX-Kenntnisse >  >> Linux

zsh ohne root-Zugriff installieren?

Wenn die Maschine zsh hat, sollten Sie einfach zsh ausführen bei einer Aufforderung zum Austauschen, wenn das funktioniert, können Sie entweder chsh versuchen um Ihre Shell auszutauschen (sollte ohne root funktionieren) oder wenn Sie sich mit ssh verbinden Geben Sie ssh -t hostname zsh ein um es automatisch zu starten.


Sie können den chsh ausprobieren Befehl. Sind Sie sicher, dass zsh nicht auf dem entfernten Computer installiert ist? Wenn nicht, können Sie dies tun (zitiert aus Abschnitt 1.7 der zsh-FAQ)

Die Grundidee besteht darin, mit exec die aktuelle Shell durch zsh zu ersetzen. Oft können Sie dies in einer Anmeldedatei wie .profile (wenn Ihre Shell sh oder ksh ist) oder .login (wenn es csh ist) tun. Stellen Sie sicher, dass Sie eine Möglichkeit haben, die Datei zu ändern (z. B. über FTP), bevor Sie dies versuchen, da exec oft ziemlich unversöhnlich ist.

Wenn Sie zsh in einem Unterverzeichnis bin Ihres Home-Verzeichnisses haben, fügen Sie dies in .profile:

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

oder wenn Ihre Login-Shell csh oder tcsh ist, fügen Sie dies in .login:

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

(in jedem Fall teilt das -l zsh mit, dass es sich um eine Login-Shell handelt).

Wenn Sie überprüfen möchten, ob dies funktioniert, bevor Sie sich dazu verpflichten, können Sie die Login-Shell fragen lassen, ob zsh ausgeführt werden soll. Folgendes funktioniert für Bourne-ähnliche Shells:

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

und für C-Shell-ähnliche Shells:

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

Es ist keine gute Idee, dies (auch ohne das -l) in .cshrc einzufügen, zumindest ohne einige Tests darüber, was die csh tun soll, da dies zu every führen wird Instanz von csh zu einem zsh wird und csh-Skripte verursacht (ja, leider schreiben einige Leute diese), die csh -f nicht aufrufen Versagen. Wenn Sie xterm anweisen möchten, zsh auszuführen, ändern Sie die SHELL-Umgebungsvariable auf den vollständigen Pfad von zsh, während Sie zsh ausführen (tatsächlich ist dies aus Gründen der Konsistenz sinnvoll, selbst wenn Sie xterm nicht verwenden). Wenn Sie zsh aus Ihrer .cshrc-Datei ausführen müssen, besteht eine Mindestsicherheitsprüfung darin, ob ($?prompt) zsh ausführen.

Wenn Sie möchten, dass Ihre Login-Shell in der Prozessliste als -zsh erscheint, können Sie zsh mit -zsh verknüpfen (z. B. durch ln -s ~/bin/zsh ~/bin/-zsh) und die exec in exec -zsh ändern. (Stellen Sie sicher, dass sich -zsh in Ihrem Pfad befindet.) Dies hat denselben Effekt wie die Option -l.

Fußnote:Wenn Sie Root-Zugriff haben, stellen Sie sicher, dass zsh auf allen geeigneten Rechnern, einschließlich NIS-Clients, in /etc/shells geht, oder Sie könnten Probleme mit FTP zu diesem Rechner haben.


Laden Sie zsh herunter mit:

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

Sie können zsh beispielsweise selbst kompilieren:

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

und starten Sie es dann explizit oder programmgesteuert aus der Startdatei Ihrer aktuellen Shell (geben Sie exec $HOME/bin/zsh -l an der richtigen Stelle).


Linux
  1. Root-Passwort per Sudo ändern, ohne Su?

  2. So installieren Sie ZSH unter Ubuntu 20.04

  3. Bash-Verlauf ohne Zeilennummern

  4. Wie installiere ich Pakete unter Linux (CentOS) ohne Root-Benutzer mit automatischer Abhängigkeitsbehandlung?

  5. Führen Sie ohne Root-Zugriff R mit optimiertem BLAS aus, wenn es mit Referenz-BLAS verknüpft ist

HOWTO:Führen Sie Linux auf Android ohne Root aus

Installieren Sie WordPress auf einem Benutzerkonto als root

Ist es möglich, g++ unter CentOS ohne Root zu installieren?

Wie installiere ich .deb lokal ohne apt-get, dpkg oder Root-Zugriff?

Wie greifen Sie auf Webmin zu?

Linux:Produktiver Sysadmin ohne Root (Schutz des geistigen Eigentums)?