[ZSH] Zsh config

Questions et astuces concernant l'installation et la configuration d'archlinux
Kithwig
newbie
Messages : 5
Inscription : lun. 10 avr. 2017, 06:44

[ZSH] Zsh config

Message par Kithwig »

Bonjour,
Je viens de changer de shell pour Zsh, j'ai utilisé la configuration basique lors de l'installation, je lui ai également ajouté zsh-completions,

Cependant, je trouve le prompt et la configuration assez minimale, le prompt étant arch%

J'ai donc vu que le paquet grml-zsh-config proposait la configuration Zsh présente dans les ISOs de tous les mois, sur la page il contient :

Code : Tout sélectionner

Package Contents

    etc/
    etc/skel/
    etc/skel/.zshrc
    etc/zsh/
    etc/zsh/keephack
    etc/zsh/zshrc
    usr/
    usr/share/
    usr/share/man/
    usr/share/man/man5/
    usr/share/man/man5/grml-zsh-config.5.gz
    usr/share/man/man5/grmlzshrc.5.gz
Sur la page Zsh de grml : https://grml.org/zsh/
# IMPORTANT: please note that you might override an existing
# configuration file in the current working directory! =>
wget -O .zshrc http://git.grml.org/f/grml-etc-core/etc/zsh/zshrc

# Optionally also grab the user configration:
# wget -O .zshrc.local http://git.grml.org/f/grml-etc-core/etc/skel/.zshrc
Est-ce que le simple fait de faire :
wget -O .zshrc http://git.grml.org/f/grml-etc-core/etc/zsh/zshrc
wget -O .zshrc.local http://git.grml.org/f/grml-etc-core/etc/skel/.zshrc

Me donnera exactement la même configuration que le paquet grml-zsh-config présent dans le dépôt ? Parce-que je vous les paquets /etc/zsh/keephack, par exemple... Donc je ne sais pas si le paquet contient des fonctionnalités supplémentaires.
Dois-je simplement mettre les deux fichier dans mon home ? Ou dans le skel ? Vu que je vois skel présent dans le lien wget

Merci d'avance.
Avatar de l’utilisateur
waitnsea
Maître du Kyudo
Messages : 2114
Inscription : jeu. 15 mars 2012, 05:08

Re: [ZSH] Zsh config

Message par waitnsea »

Kithwig a écrit : lun. 10 avr. 2017, 06:54J'ai donc vu que le paquet grml-zsh-config proposait la configuration Zsh présente dans les ISOs de tous les mois,
Bonjour,
J'ai eu des soucis avec grml 3702 lignes de code !, viewtopic.php?f=5&t=17900&hilit=grml
Pour commencer tu peux te copier simplement le .zshrc d'Ubuntu
Sinon, la plupart sur Arch choisissent oh-my-zsh .
Bon, il faut trier...
Il te sera utile de créer un .zsh_aliases pour tes alias, auquel .zshrc renverra par les lignes

Code : Tout sélectionner

# renvoi au fichier d'alias
[ -f .zsh_aliases ] && source $HOME/.zsh_aliases
et pour éviter toute erreur liée aux renvois à la ligne qui "cassent" le code, quand je modifie un de ces fichiers avec nano je n'édite (en chmod 700) en terminal qu'en plein écran et ensuite je les re-chmod 500 ...
Edit : Si tu as des scripts utilisés fréquemment, tu ajoutes 2 lignes à ton .zshrc, ex :

Code : Tout sélectionner

# PATH vers Scripts personnels
export PATH=$PATH:/home/waitnsea/Scripts/
et ça fonctionnera même en auto-complétion !
Dernière modification par waitnsea le lun. 10 avr. 2017, 20:43, modifié 1 fois.
Kithwig
newbie
Messages : 5
Inscription : lun. 10 avr. 2017, 06:44

Re: [ZSH] Zsh config

Message par Kithwig »

Bonjour, merci pour ta réponse,
J'ai les scripts dans ~/Scripts

J'ajoute simplement la ligne export PATH=$PATH:~/Scripts pour avoir accès à mes scripts ? Ou il faut également configurer .zsh-aliases, ?
Pour le fichier alias, je mets tous les alias dans le fichier .zsh-aliases, et j'utilise : [ -f .zsh_aliases ] && source $HOME/.zsh_aliases ?
Normalement le .zshrc est propre à l'utilisateur donc je peux mettre le chemin ~/Scripts, non ? (À moins que je me trompe et qu'il ne soit pas propre à l'utilisateur le .zshrc)

Les fichiers je les édites avec vim, j'imagine que lorsque tu parle des renvois à la ligne qui "cassent" le code, tu veux dire quand la ligne est trop longue pour nano ?
Avec vim il n'y a normalement pas ce problème, mais je ne comprends pas pourquoi il faut les chmod 700 puis chmod 500
Avatar de l’utilisateur
waitnsea
Maître du Kyudo
Messages : 2114
Inscription : jeu. 15 mars 2012, 05:08

Re: [ZSH] Zsh config

Message par waitnsea »

Kithwig a écrit : lun. 10 avr. 2017, 18:19 Bonjour, merci pour ta réponse,
J'ai les scripts dans ~/Scripts

J'ajoute simplement la ligne export PATH=$PATH:~/Scripts pour avoir accès à mes scripts ? Ou il faut également configurer .zsh-aliases, ?
Pour le fichier alias, je mets tous les alias dans le fichier .zsh-aliases, et j'utilise : [ -f .zsh_aliases ] && source $HOME/.zsh_aliases ?
Normalement le .zshrc est propre à l'utilisateur donc je peux mettre le chemin ~/Scripts, non ? (À moins que je me trompe et qu'il ne soit pas propre à l'utilisateur le .zshrc)

Les fichiers je les édites avec vim, j'imagine que lorsque tu parle des renvois à la ligne qui "cassent" le code, tu veux dire quand la ligne est trop longue pour nano ?
Avec vim il n'y a normalement pas ce problème, mais je ne comprends pas pourquoi il faut les chmod 700 puis chmod 500
* Attention aux fautes : .zsh-aliases n'est pas .zsh_aliases... (c'est moi qui ai fait la faute...corrigée)
* Tes scripts ne sont pas des alias, pour les scripts tu exportes leur PATH dans ton .zshrc, ce PATH qui t'est propre s'ajoutera aux

Code : Tout sélectionner

PATH=/usr/local/sbin:/usr/local/bin:/usr/bin:/opt/adobe-air-sdk/bin:/opt/cuda/bin....
que renvoie la commande env et qui sont pour tous les user.
Les alias, qui tiennent en une ligne, tu les mets dans .zsh_aliases si tu en as beaucoup, ou dans .zshrc comme dans le Wiki d'Ubuntu, s'il y en a peu, comme tu veux...
* export PATH=$PATH:/home/waitnsea/Scripts/ fonctionnera toujours, je ne suis pas sur que export PATH=$PATH:~/Scripts/ fonctionne dans toutes les circonstances (avec rsync, etc...)
Kithwig a écrit : lun. 10 avr. 2017, 18:19Les fichiers je les édites avec vim, j'imagine que lorsque tu parle des renvois à la ligne qui "cassent" le code, tu veux dire quand la ligne est trop longue pour nano ?
Avec vim il n'y a normalement pas ce problème, mais je ne comprends pas pourquoi il faut les chmod 700 puis chmod 500
C'est ça, propre à nano, une fois mes .zshrc et.zsh_aliases bien configurés je les "fige" avec chmod 500 pour qu'ils ne se modifient pas par erreur
Kithwig
newbie
Messages : 5
Inscription : lun. 10 avr. 2017, 06:44

Re: [ZSH] Zsh config

Message par Kithwig »

C'est pour ça que je n'utilise plus nano, parce-qu'il casse les lignes, du coup j'utilise vim

Alors les alias je n'en ai quasiment pas, mais c'est intéressant à savoir configurer (.zsh-aliases)
En revanche, pour PATH, j'ai du mal à comprendre, tu me dis d'ajouter

Code : Tout sélectionner

PATH=$PATH:/home/waitnsea/Scripts
Mais si je l'ajoute dans mon .zshrc seul mon utilisateur aura accès à ce PATH ? Vu que .zshrc c'est seul mon utiilsateur qui y a accès, à moins que je me trompe

En revanche si je fait

Code : Tout sélectionner

export PATH=$PATH:/home/waitnsea/Scripts/
tous les utilisateurs auront accès à ce PATH ?

Parce-que lorsque je vois des scripts, je vois
For ease of use, add the script to your PATH.
Donc ça veut dire qu'il faut faire ceci ?

Code : Tout sélectionner

export PATH=$PATH:/home/waitnsea/Scripts/
Avatar de l’utilisateur
waitnsea
Maître du Kyudo
Messages : 2114
Inscription : jeu. 15 mars 2012, 05:08

Re: [ZSH] Zsh config

Message par waitnsea »

Si tu as fait un script appelé par exemple SynchroSSHOrdi2.sh , placé dans /home/kithwig/Scripts/
Une fois que tu auras placé dans ton .zshrc :

Code : Tout sélectionner

# PATH vers Scripts personnels
export PATH=$PATH:/home/kithwig/Scripts/
, quand tu auras fermé puis rouvert ton terminal pour que ce soit pris en compte (sauf si tu lances source ~/.zshrc)
En tapant SynchroS puis <TAB> dans le terminal,
* l'auto-complétion complétera le nom du script
* le script sera lancé

Bien sûr un autre user n'auras pas cette possibilité sauf si tu crées en root un lien dans /usr/bin vers le script que tu veux partager

Edit : l'autocomplétion doit aussi être activée !
Si, pour commencer tu pars de la base proposée par Ubuntu, tu auras ces lignes dans ton .zshrc :

Code : Tout sélectionner

# Activation de la complétion
autoload -U compinit
compinit $HOME
Si tu as utilisé oh-my-zsh tu auras celles-ci :

Code : Tout sélectionner

# add a function path
fpath=($ZSH/functions $ZSH/completions $fpath)

# Load all stock functions (from $fpath files) called below.
autoload -U compaudit compinit
Et tu pourras aussi utiliser les plugins
Kithwig
newbie
Messages : 5
Inscription : lun. 10 avr. 2017, 06:44

Re: [ZSH] Zsh config

Message par Kithwig »

waitnsea a écrit : mar. 11 avr. 2017, 06:49 Si tu as fait...
Tous mes scripts sont dans ~/Scripts
J'ajoute donc dans mon .zshrc :

Code : Tout sélectionner

export PATH=$PATH:/home/waitnsea/Scripts
Ce qui veut dire que si j'ai un script par exemple, "SynchroSSHOrdi2.sh", je tape SynchroS + <TAB> et je pourrais appeler mon script (donc tous les scripts dans ~/Scripts), c'est ça ?

Est-ce que ça AJOUTE un endroit au PATH ou ça REMPLACE tout mon PATH ?

Le lien en root je fais ln -sf /home/waitnsea/Scripts/SynchroSSHOrdi2.sh /usr/bin/SynchroSSHOrdi2.sh ?

Pourquoi il y a une différence dnas l'ajout du path et de l'autocompletion avec oh my zsh ?

Code : Tout sélectionner

# add a function path
fpath=($ZSH/functions $ZSH/completions $fpath)

# Load all stock functions (from $fpath files) called below.
autoload -U compaudit compinit
Cela active le path et l'autocompletion, et je dois ajouter quand même la ligne

Code : Tout sélectionner

export PATH=$PATH:/home/waitnsea/Scripts
?

La commande

Code : Tout sélectionner

source ~/.zshrc
ne sert qu'à changer le terminal sans avoir à le fermer ? Ou il me faut le faire dans tous les cas ?

Ah oui, des fois j'ouvre un terminal et je tape trop vite, avant d'avoir le prompt et ça décale un peu et ça écrit avant le prompt et ça me donne le prompt ensuite, ça bousille quelque chose ?
Avatar de l’utilisateur
waitnsea
Maître du Kyudo
Messages : 2114
Inscription : jeu. 15 mars 2012, 05:08

Re: [ZSH] Zsh config

Message par waitnsea »

Kithwig a écrit : lun. 17 avr. 2017, 12:30Tous mes scripts sont dans ~/Scripts
J'ajoute donc dans mon .zshrc :

Code : Tout sélectionner

export PATH=$PATH:/home/waitnsea/Scripts
waitnsea c'est moi !, un exemple donc, à adapter à ton nom d'user à toi...
Kithwig a écrit : lun. 17 avr. 2017, 12:30Ce qui veut dire que si j'ai un script par exemple, "SynchroSSHOrdi2.sh", je tape SynchroS + <TAB> et je pourrais appeler mon script (donc tous les scripts dans ~/Scripts), c'est ça ?
Si tu as activé l'auto-complétion tu verras le nom de ton script se compléter "tout seul", et tu le lanceras avec <Enter>
Kithwig a écrit : lun. 17 avr. 2017, 12:30Est-ce que ça AJOUTE un endroit au PATH ou ça REMPLACE tout mon PATH ?
J'ai bien dit qu'il ajoutait ce lien, pour toi seul, à ceux qui existaient auparavant, tu le verras facilement en lançant la commande env avant et après
Kithwig a écrit : lun. 17 avr. 2017, 12:30Le lien en root je fais ln -sf /home/waitnsea/Scripts/SynchroSSHOrdi2.sh /usr/bin/SynchroSSHOrdi2.sh ?
un lien en root vers un de tes scripts persos c'est pour des scripts qui seront utilisés par tous les users
Kithwig a écrit : lun. 17 avr. 2017, 12:30Pourquoi il y a une différence dnas l'ajout du path et de l'autocompletion avec oh my zsh ?
Le .zshrc d'Ubuntu que je te propose pour commencer est un bon début.
Quand tu en verras l'utilité tu passera à oh-my-zsh avec ses centaines de plugins
Kithwig a écrit : lun. 17 avr. 2017, 12:30

Code : Tout sélectionner

# add a function path
fpath=($ZSH/functions $ZSH/completions $fpath)

# Load all stock functions (from $fpath files) called below.
autoload -U compaudit compinit
Cela active le path et l'autocompletion, et je dois ajouter quand même la ligne

Code : Tout sélectionner

export PATH=$PATH:/home/waitnsea/Scripts
?
path et auto-complétion sont deux fonctions différentes, difficile de se passer de l'auto-complétion, mais le PATH n'est utile que si tu as des programmes ou des scripts ailleurs que dans les endroits "normaux" (/usr/bin , usr/sbin/ , /opt/...)
Kithwig a écrit : lun. 17 avr. 2017, 12:30La commande

Code : Tout sélectionner

source ~/.zshrc
ne sert qu'à changer le terminal sans avoir à le fermer ? Ou il me faut le faire dans tous les cas ?[/code]
Elle ne sert qu'à faire prendre en compte une récente modif de ton .zshrc pour la tester sans avoir à fermer puis rouvrir le terminal c'est juste pour que tu connaisses cette option
Kithwig a écrit : lun. 17 avr. 2017, 12:30Ah oui, des fois j'ouvre un terminal et je tape trop vite, avant d'avoir le prompt et ça décale un peu et ça écrit avant le prompt et ça me donne le prompt ensuite, ça bousille quelque chose ??
A priori non, mais ça veut dire que (comme moi hélas) tu regardes ton clavier en tapant au lieu de l'écran. Si tu as un peu de temps, apprends à taper sans regarder tes doigts.
Répondre