GNU/Linux >> Tutoriels Linux >  >> Linux

Installer zsh sans accès root ?

Si la machine a zsh dessus, vous devriez pouvoir exécuter zsh sur une invite pour échanger, si cela fonctionne, vous pouvez soit essayer chsh pour échanger votre shell (devrait fonctionner sans racine) ou lorsque vous vous connectez avec ssh mettre ssh -t hostname zsh pour le démarrer automatiquement.


Vous pouvez essayer le chsh commande. Es-tu sûr que zsh n'est pas installé sur l'ordinateur distant ? Sinon, vous pouvez le faire (cité de la section 1.7 de la FAQ zsh)

L'idée de base est d'utiliser exec pour remplacer le shell actuel par zsh. Souvent, vous pouvez le faire dans un fichier de connexion tel que .profile (si votre shell est sh ou ksh) ou .login (si c'est csh). Assurez-vous d'avoir un moyen de modifier le fichier (par exemple via FTP) avant d'essayer car exec est souvent plutôt impitoyable.

Si vous avez zsh dans un sous-répertoire bin de votre répertoire personnel, mettez ceci dans .profile :

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

ou si votre shell de connexion est csh ou tcsh, mettez ceci dans .login :

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

(dans chaque cas, le -l indique à zsh qu'il s'agit d'un shell de connexion).

Si vous voulez vérifier que cela fonctionne avant de vous y engager, vous pouvez faire en sorte que le shell de connexion demande s'il faut exécuter zsh. Le travail suivant pour les shells de type Bourne :

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

et pour les shells de type C-shell :

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

Ce n'est pas une bonne idée de mettre cela (même sans le -l) dans .cshrc, au moins sans quelques tests sur ce que le csh est censé faire, car cela causera tous instance de csh se transforme en zsh et provoquera des scripts csh (oui, malheureusement certaines personnes les écrivent) qui n'appellent pas csh -f échouer. Si vous voulez dire à xterm d'exécuter zsh, remplacez la variable d'environnement SHELL par le chemin complet de zsh en même temps que vous exécutez zsh (en fait, cela est judicieux pour la cohérence même si vous n'utilisez pas xterm). Si vous devez exécuter zsh depuis votre .cshrc, un contrôle de sécurité minimum est if ($?prompt) exec zsh.

Si vous souhaitez que votre shell de connexion apparaisse dans la liste des processus en tant que -zsh, vous pouvez lier zsh à -zsh (par exemple, par ln -s ~/bin/zsh ~/bin/-zsh) et remplacer exec par exec -zsh. (Assurez-vous que -zsh est dans votre chemin.) Cela a le même effet que l'option -l.

Note de bas de page :si vous avez un accès root, assurez-vous que zsh va dans /etc/shells sur toutes les machines appropriées, y compris les clients NIS, ou vous pourriez avoir des problèmes avec FTP sur cette machine.


Téléchargez zsh avec :

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

Vous pouvez compiler zsh vous-même, par exemple :

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

puis démarrez-le explicitement ou par programmation à partir du fichier de démarrage de votre shell actuel (mettez exec $HOME/bin/zsh -l au bon endroit).


Linux
  1. Changer le mot de passe root par Sudo, sans Su ?

  2. Comment installer ZSH sur Ubuntu 20.04

  3. Historique bash sans numéro de ligne

  4. Est-il possible d'installer g++ sur CentOS sans root ?

  5. Comment installer des packages sous Linux (CentOS) sans utilisateur root avec gestion automatique des dépendances ?

Comment installer Oh My Zsh sur Ubuntu

HOWTO :Exécuter Linux sur Android sans racine

Installer emacs sans sudo ?

Installation de logiciels sous Linux sans privilèges root

Comment puis-je autoriser un utilisateur à su un autre sans autoriser l'accès root?

Liaison aux ports inférieurs à 1024 sans accès root