Sofern ich das nicht falsch verstehe, ist die markierte Antwort von Caleb nur die normale Installation pro Benutzer Schritte mit dem Hinzufügen einer .zshrc-Datei zum skel-Verzeichnis und dem Ändern der Standard-Shell für neue Benutzer, aber es funktioniert nicht wirklich oder beantwortet die Frage nicht wirklich weil jeder Benutzer noch erfordert das oh-my-zsh-Verzeichnis/würde immer noch verlangen, dass jeder Benutzer das oh-my-zsh-Verzeichnis in seinen eigenen Ordner klont, was bedeutet, dass es nicht wirklich systemweit installiert ist , es gibt ihnen einfach automatisch eine zshrc-Datei und ändert die Standard-Shell in zsh, aber ohne oh-my-zsh in jedem Benutzerordner wird es einen Fehler geben.
Soweit ich die Frage verstehe, wird gefragt, wie oh-my-zsh systemweit installiert wird aka es an EINEM Ort installiert haben und nicht manuell an jedem neuen Benutzer herumspielen müssen / einen Git-Klon von oh-my-zsh in jedem Benutzerverzeichnis haben müssen. Angenommen, das ist der Fall, habe ich Folgendes getan, basierend auf dem AUR-Paket von Arch Linux, das ich normalerweise verwende, aber auf einem Centos-Server nach demselben gesucht habe, dies kann jedoch auf jeder Distribution durchgeführt werden. Dank geht an MarcinWieczorek und die anderen Betreuer , ich habe gerade das Folgende angepasst, damit das Gleiche auf Nicht-Arch-Distributionen möglich ist.
Falls Sie oh-my-zsh bereits im Root-Verzeichnis installiert haben, fahren Sie einfach mit Schritt 3 fort. Dies ist nicht spezifisch für die Distribution, sondern verwendet nur die AUR-Patch-Datei für zshrc
Schritt 1
Installieren Sie natürlich zsh
Schritt 2
Installieren Sie oh-my-zsh wie gewohnt als root (zeigt die wget-Methode, siehe Calebs Antwort für Alternativen)
sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"
Schritt 3
Verschieben Sie die Installation nach /usr/share, damit sie systemweit gültig ist
#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
Jetzt ist oh-my-zsh global installiert und der Benutzer benötigt nur diese zshrc-Datei. also kommt JETZT Calebs Antwort ins Spiel, aber tun Sie einfach das Folgende, da /etc/adduser.conf nur auf Debian ist, während das Folgende distro-unabhängig sein sollte.
Schritt 4
Richten Sie es als Standard für neue Benutzer ein
# 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
Nun, das ist wahr Installation von oh-my-zsh, wobei alle neuen Benutzer es automatisch mit den /usr/share/oh-my-zsh/zshrc-Einstellungen anwenden und keine weiteren Schritte erforderlich sind.
Verschiedene Anmerkungen
-
Für alle bereits bestehenden Benutzer von oh-my-zsh:
cp /usr/share/oh-my-zsh/zshrc ~/.zshrc
- Sie können OMZ-Standardeinstellungen für neue Benutzer festlegen in /usr/share/oh-my-zsh/zshrc
- Automatische Updates sind deaktiviert da neue Benutzer keine Berechtigung zum Aktualisieren der /usr/share/oh-my-zsh-Dateien
- haben
- Um oh-my-zsh zu aktualisieren cd einfach nach /usr/share/oh-my-zsh/ und führe 'sudo git pull' aus
- Der oh-my-zsh-Cache wird pro Benutzer in jedem Benutzerverzeichnis unter ~/.oh-my-zsh-cache/ verwaltet (automatisch erstellt)
Fair Warning:Dies setzt ein Linux im Debian-Stil voraus, aber dies sollte auch auf anderen Formularen funktionieren. Dies setzt auch voraus, dass Sie bei Null anfangen.
Teil 1 , die Installation:
Sie müssen zsh systemweit installieren und nicht nur für einen Benutzer. (Möglicherweise haben Sie dies bereits getan, aber ich füge es nur der Vollständigkeit halber hinzu)
Stellen Sie sicher, dass Sie zsh installiert haben, einfach:sudo apt-get install zsh
Folgen Sie der oh-my-zsh-Installationsanleitung oder Sie können entweder:
Verwenden Sie curl
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
Verwenden Sie wget
sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"
Teil 2 , Einrichten von zsh, wenn neue Benutzer hinzugefügt werden:
Sie müssen es so einrichten, dass neue Benutzer standardmäßig zsh verwenden. In Ihrem /etc/adduser.conf
Datei Bearbeiten Sie die Zeile, die besagt:
DSHELL=/bin/sh
zu:
DSHELL=/bin/zsh
Sie sollten es auch für /etc/default/useradd
ändern Datei, ändern Sie die Zeile:
SHELL=/bin/sh
zu:
SHELL=/bin/zsh
Teil 3 , legen Sie Ihr benutzerdefiniertes Thema fest.
Ich habe eine benutzerdefinierte Themendatei (hier), die alle Benutzer auf dem System haben sollten. Zuerst sollten Sie die Datei zu Ihrem .oh-my-zsh/themes
hinzufügen Ordner:
cp your_custom_style.zsh-theme ~/.oh-my-zsh/themes
Als nächstes bearbeiten Sie Ihre .zshrc
Datei in Ihrem Home-Verzeichnis, ändern Sie den ZSH_THEME="default"
bis ZSH_THEME="your_custom_style"
Laden Sie dann Ihren .zshrc
neu Datei mit:. ~/.zshrc
Teil 4 , Home-Verzeichnisse für neue Benutzer einrichten.
Wir müssen alle Dateien, die die neuen Benutzer haben sollen, im /etc/skel
ablegen Verzeichnis, da dies das ist, was das System kopiert, wenn es das Home-Verzeichnis des neuen Benutzers erstellt. Weitere Informationen finden Sie in diesem Handbuch für Systemadministratoren.
Kopieren Sie die Dateien Ihres Benutzers (möglicherweise müssen Sie sudo ausführen):
cp -r .oh-my-zsh /etc/skel/
cp .zshrc /etc/skel
Jetzt können Sie neue Benutzer hinzufügen und sie haben standardmäßig oh-my-zsh mit dem benutzerdefinierten Thema, das Sie haben möchten.
Wenn Sie die Shell aller anderen vorhandenen Benutzer auf zsh ändern möchten, würde ich empfehlen, diese Serverfehlerfrage zu lesen.
Wenn Sie eine systemweite Installation von Oh-My-Zsh wünschen, ist ein praktischer Ansatz, der die wenigsten Dateien überschreibt, folgender:
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
Bearbeiten Sie /etc/skel/.zshrc
:
- Bearbeiten Sie die Zeile
export ZSH=$HOME/.oh-my-zsh
(aktuell Zeile 5) - Ändern Sie die Zeile wie folgt:
export ZSH=/etc/oh-my-zsh
export ZSH_CACHE_DIR=~/.oh-my-zsh/cache
Bearbeiten Sie dann /etc/default/useradd
und ändern Sie die Zeile SHELL=...
bis SHELL=/bin/zsh
.
Das ist im Grunde alles (natürlich müssen git und zsh bereits installiert sein).
Um einen bereits bestehenden Benutzer zu aktualisieren:Melden Sie sich als dieser an und cp /etc/skel/.zshrc ~/.zshrc
Aktualisierung: Bitte bearbeiten Sie diese nicht. Ich habe gerade eine Bearbeitung rückgängig gemacht, die sie komplett vermasselt hat!
Melden Sie sich als ROOT an
Schritt 1:ZSH installieren
# 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
Schritt 2:Installieren Sie 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
Schritt 3:Extra hinzufügen (Optional – siehe unten für zusätzliche Funktionen)
Schritt 4:Symbolischen Link erstellen
# Create Symbolic Links to /etc/skel
sudo ln /usr/share/oh-my-zsh/zshrc /etc/skel/.zshrc
Schritt 5:oh-my-zsh für root hinzufügen
# Change shell to ZSH for root
echo "$USER" | chsh -s /usr/local/bin/zsh
Schritt 6:oh-my-zsh für Benutzer hinzufügen
# 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
ODER
sudo -i -u username bash << EOF
cp /usr/share/oh-my-zsh/zshrc ~/.zshrc
echo username | chsh -s /usr/local/bin/zsh
EOF
EXTRA:
Design zu powerlevel10k ändern
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
Automatische Korrektur aktivieren
sed -i 's/# ENABLE_CORRECTION="true"/ENABLE_CORRECTION="true"/g' /usr/share/oh-my-zsh/zshrc
Automatische Vorschläge und Syntaxhervorhebung aktivieren
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
Füge nord dircolors hinzu
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