À moins que je ne comprenne mal, la réponse marquée de Caleb est juste l'installation normale par utilisateur étapes avec l'ajout d'un fichier .zshrc au répertoire skel et la modification du shell par défaut du nouvel utilisateur, mais cela ne fonctionne pas réellement ou ne répond pas vraiment à la question parce que chaque utilisateur toujours nécessite le répertoire oh-my-zsh/obligerait toujours chaque utilisateur à cloner le répertoire oh-my-zsh dans son propre dossier, ce qui signifie qu'il n'est pas vraiment installé à l'échelle du système , il leur donne automatiquement un fichier zshrc et change le shell par défaut en zsh, mais sans oh-my-zsh dans chaque dossier utilisateur, une erreur se produira.
D'après ce que je comprends de la question, il demande comment installer oh-my-zsh à l'échelle du système c'est-à-dire l'avoir installé à UN endroit et ne pas nécessiter de déconner manuellement sur chaque nouvel utilisateur/avoir un clone git de oh-my-zsh sur chaque répertoire utilisateur. En supposant que ce soit le cas, voici ce que j'ai fait sur la base du package AUR d'Arch Linux que j'utilise normalement mais que je recherchais la même chose sur un serveur centos, mais cela peut être fait sur n'importe quelle distribution. Le crédit revient à MarcinWieczorek et aux autres mainteneurs , je viens d'adapter ce qui suit pour pouvoir faire la même chose sur les distributions non arch.
Si vous avez déjà installé oh-my-zsh sur root, passez simplement à l'étape 3. Ce n'est pas spécifique à la distribution, mais utilise simplement le fichier de correctif AUR pour zshrc
Étape 1
Installez zsh bien sûr
Étape 2
Installez oh-my-zsh en tant que root comme d'habitude (affiche la méthode wget, voir la réponse de Calebs pour une alternative)
sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"
Étape 3
Déplacez l'installation vers /usr/share pour qu'elle soit à l'échelle du système
#Copy zsh files to /usr/share for all uer access
mv /root/.oh-my-zsh /usr/share/oh-my-zsh
# Move into the dir and copy the zshrc template to zshrc (which will be the default for users)
cd /usr/share/oh-my-zsh/
cp templates/zshrc.zsh-template zshrc
# Nab the patch file from MarcinWieczorek's AUR Package and apply to the zshrc file
wget https://aur.archlinux.org/cgit/aur.git/plain/0001-zshrc.patch\?h\=oh-my-zsh-git -O zshrc.patch && patch -p1 < zshrc.patch
Maintenant, oh-my-zsh est installé globalement et l'utilisateur n'a besoin que de ce fichier zshrc. donc MAINTENANT, c'est là que la réponse de Caleb entre en jeu, mais faites simplement ce qui suit car /etc/adduser.conf est uniquement sur Debian alors que ce qui suit devrait être indépendant de la distribution.
Étape 4
Configurez-le par défaut pour les nouveaux utilisateurs
# Create hard link to the zshrc file so it creates an actual independent copy on new users
sudo ln /usr/share/oh-my-zsh/zshrc /etc/skel/.zshrc
# Set default shell to zsh
sudo adduser -D -s /bin/zsh
Maintenant c'est un vrai installation de oh-my-zsh avec tous les nouveaux utilisateurs l'appliquant automatiquement avec les paramètres /usr/share/oh-my-zsh/zshrc et aucune autre étape nécessaire.
Notes diverses
-
Pour tous les utilisateurs préexistants avec oh-my-zsh :
cp /usr/share/oh-my-zsh/zshrc ~/.zshrc
- Vous pouvez définir les nouvelles valeurs par défaut de l'utilisateur OMZ dans /usr/share/oh-my-zsh/zshrc
- Les mises à jour automatiques sont désactivées puisque les nouveaux utilisateurs n'ont pas les permissions de mettre à jour les fichiers /usr/share/oh-my-zsh
- Pour mettre à jour oh-my-zsh cd vers /usr/share/oh-my-zsh/ et lancez 'sudo git pull'
- Le cache oh-my-zsh sera géré par utilisateur dans chaque répertoire utilisateur sous ~/.oh-my-zsh-cache/ (créé automatiquement)
Juste Attention :cela suppose un Linux de style Debian, mais cela devrait également fonctionner sur d'autres formulaires. Cela suppose également que vous partez de zéro.
Partie 1 , l'installation :
Vous devrez installer zsh à l'échelle du système, et pas seulement pour un seul utilisateur. (vous l'avez peut-être déjà fait, mais je vais l'inclure juste pour être complet)
assurez-vous d'avoir installé zsh, simplement :sudo apt-get install zsh
Suivez le guide d'installation oh-my-zsh ou vous pouvez :
utiliser boucle
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
utiliser wget
sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"
Partie 2 , Configuration de zsh lors de l'ajout de nouveaux utilisateurs :
Vous devrez faire en sorte que les nouveaux utilisateurs utilisent par défaut zsh. Dans votre /etc/adduser.conf
fichier modifier la ligne qui dit :
DSHELL=/bin/sh
à :
DSHELL=/bin/zsh
Vous devriez également le changer pour le /etc/default/useradd
fichier, changez la ligne :
SHELL=/bin/sh
à :
SHELL=/bin/zsh
Partie 3 , définissez votre thème personnalisé.
J'ai un fichier de thème personnalisé (ici) que je voulais que tous les utilisateurs du système aient. Tout d'abord, vous devez ajouter le fichier à votre .oh-my-zsh/themes
dossier :
cp your_custom_style.zsh-theme ~/.oh-my-zsh/themes
Ensuite, modifiez votre .zshrc
fichier dans votre répertoire personnel, modifiez le ZSH_THEME="default"
à ZSH_THEME="your_custom_style"
Ensuite, rechargez votre .zshrc
fichier avec :. ~/.zshrc
Partie 4 , en configurant les répertoires personnels des nouveaux utilisateurs.
Nous devons placer tous les fichiers que nous voulons que les nouveaux utilisateurs aient dans le /etc/skel
répertoire, car c'est ce que le système copie lorsqu'il crée le répertoire personnel d'un nouvel utilisateur. Consultez ce guide d'administration système pour plus de détails.
Copiez les fichiers de votre utilisateur (vous devrez peut-être sudo):
cp -r .oh-my-zsh /etc/skel/
cp .zshrc /etc/skel
Vous pourrez maintenant ajouter de nouveaux utilisateurs et ils auront oh-my-zsh par défaut avec le thème personnalisé que vous souhaitez qu'ils aient.
Si vous souhaitez remplacer le shell de tous les autres utilisateurs existants par zsh, je vous recommande de lire cette question sur les erreurs de serveur.
Si vous souhaitez une installation de Oh-My-Zsh à l'échelle du système, une approche pratique qui écrase le plus petit nombre de fichiers est :
sudo git clone https://github.com/robbyrussell/oh-my-zsh.git /etc/oh-my-zsh
sudo cp /etc/oh-my-zsh/templates/zshrc.zsh-template /etc/skel/.zshrc
sudo mkdir -p /etc/skel/.oh-my-zsh/cache
Modifier /etc/skel/.zshrc
:
- Modifier la ligne
export ZSH=$HOME/.oh-my-zsh
(actuellement ligne 5) - Changer la ligne pour :
export ZSH=/etc/oh-my-zsh
export ZSH_CACHE_DIR=~/.oh-my-zsh/cache
Puis modifiez /etc/default/useradd
et changez la ligne SHELL=...
à SHELL=/bin/zsh
.
C'est essentiellement tout (bien sûr, git et zsh doivent déjà être installés).
Pour mettre à jour un utilisateur préexistant :connectez-vous en tant qu'eux et cp /etc/skel/.zshrc ~/.zshrc
Mise à jour : Veuillez ne pas modifier ceci. Je viens d'annuler une modification qui l'a complètement bâclé !
Se connecter en tant que ROOT
Étape 1 :Installez ZSH
# Download and extract ZSH
wget https://github.com/zsh-users/zsh/archive/zsh-5.8.tar.gz -P /tmp/demo/zsh
cd /tmp/demo/zsh
tar -xvzf zsh-*
cd zsh-zsh-5.8
# configure and make
sudo ./Util/preconfig
sudo ./configure
sudo make && sudo make install
# Add ZSH to the list of shells
echo /usr/local/bin/zsh | sudo tee -a /etc/shells
Étape 2 :Installez oh-my-zsh
# If you're running the Oh My Zsh install script as part of an automated install,
# you can pass the flag --unattended to the install.sh script.
# This will have the effect of not trying to change the default shell, and also won't
# run zsh when the installation has finished.
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended
# Add oh-my-zsh to /usr/share
mv /root/.oh-my-zsh /usr/share
mv /usr/share/.oh-my-zsh /usr/share/oh-my-zsh
mv /root/.zshrc /usr/share/oh-my-zsh
mv /usr/share/oh-my-zsh/.zshrc /usr/share/oh-my-zsh/zshrc
# Modify zshrc to point to /usr/share/oh-my-zsh
sed -i 's|export ZSH="'"$HOME"'/.oh-my-zsh"|export ZSH="\/usr\/share\/oh-my-zsh"|g' /usr/share/oh-my-zsh/zshrc
Étape 3 :Ajoutez des éléments supplémentaires (facultatif :regardez en bas pour des fonctionnalités supplémentaires)
Étape 4 :Créer un lien symbolique
# Create Symbolic Links to /etc/skel
sudo ln /usr/share/oh-my-zsh/zshrc /etc/skel/.zshrc
Étape 5 :Ajoutez oh-my-zsh pour root
# Change shell to ZSH for root
echo "$USER" | chsh -s /usr/local/bin/zsh
Étape 6 :Ajoutez oh-my-zsh pour l'utilisateur
# Change user
su - username
# Copy zshrc to $HOME for user
cp /usr/share/oh-my-zsh/zshrc ~/.zshrc
# Change shell to ZSH for user
echo "$USER" | chsh -s /usr/local/bin/zsh
OU
sudo -i -u username bash << EOF
cp /usr/share/oh-my-zsh/zshrc ~/.zshrc
echo username | chsh -s /usr/local/bin/zsh
EOF
EXTRA :
Changez le thème en powerlevel10k
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-/usr/share/oh-my-zsh/custom}/themes/powerlevel10k
sed -i 's/ZSH_THEME="robbyrussell"/ZSH_THEME="powerlevel10k\/powerlevel10k"/g' /usr/share/oh-my-zsh/zshrc
Activer la correction automatique
sed -i 's/# ENABLE_CORRECTION="true"/ENABLE_CORRECTION="true"/g' /usr/share/oh-my-zsh/zshrc
Activer les suggestions automatiques et la coloration syntaxique
git clone --depth=1 https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-/usr/share/oh-my-zsh/custom}/plugins/zsh-autosuggestions
git clone --depth=1 https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-/usr/share/oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
sed -i 's/plugins=(git)/plugins=(\n git\n zsh-autosuggestions\n zsh-syntax-highlighting\n)/' /usr/share/oh-my-zsh/zshrc
sed -i 's/plugins=(git)/plugins=(git)\nZSH_DISABLE_COMPFIX=true/' /usr/share/oh-my-zsh/zshrc
Ajouter nord dircolors
git clone --depth=1 https://github.com/arcticicestudio/nord-dircolors.git /tmp/demo/dircolors
mv /tmp/demo/dircolors/src/dir_colors /usr/share/
cd /usr/share/
mv /usr/share/dir_colors /usr/share/.dir_colors
tee -a /usr/share/oh-my-zsh/zshrc >/dev/null <<'EOF'
test -r "/usr/share/.dir_colors" && eval $(dircolors /usr/share/.dir_colors)
EOF