A meno che io non abbia frainteso, la risposta contrassegnata da Caleb è solo la normale installazione per utente passaggi con l'aggiunta di un file .zshrc alla directory skel e la modifica della shell predefinita per i nuovi utenti, ma in realtà non funziona o non risponde realmente alla domanda perché ogni utente ancora richiede la directory oh-my-zsh/richiede comunque a ciascun utente di clonare la directory oh-my-zsh nella propria cartella, il che significa che non è realmente installata a livello di sistema , fornisce loro automaticamente un file zshrc e cambia la shell predefinita in zsh, ma senza oh-my-zsh in ogni cartella utente si verificherà un errore.
Da quanto ho capito, la domanda chiede come installare oh-my-zsh a livello di sistema ovvero averlo installato in UN posto e non richiedere di scherzare manualmente su ogni nuovo utente/avere un clone git di oh-my-zsh su ogni directory utente. Supponendo che sia così, ecco cosa ho fatto sulla base del pacchetto AUR di Arch Linux che uso normalmente ma cercavo lo stesso su un server centos, tuttavia questo può essere fatto su qualsiasi distribuzione. Il merito va a MarcinWieczorek e agli altri manutentori , ho appena adattato quanto segue in modo da poter fare lo stesso su distribuzioni non arch.
Se hai già oh-my-zsh installato su root, vai al passaggio 3. Questo non è specifico per la distribuzione, utilizza solo il file di patch AUR per zshrc
Passaggio 1
Installa zsh ovviamente
Passaggio 2
Installa oh-my-zsh come root come di consueto (mostra il metodo wget, vedi la risposta di Caleb per l'alternativa)
sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"
Passaggio 3
Sposta l'installazione in /usr/share in modo che sia a livello di sistema
#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
Ora oh-my-zsh è installato a livello globale e l'utente ha solo bisogno di quel file zshrc. quindi ORA è dove arriva la risposta di Caleb, anche se basta fare quanto segue poiché /etc/adduser.conf è solo su debian mentre quanto segue dovrebbe essere indipendente dalla distribuzione.
Passaggio 4
Impostalo come predefinito per i nuovi utenti
# 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
Questo è un vero installazione di oh-my-zsh con tutti i nuovi utenti che lo applicano automaticamente con le impostazioni /usr/share/oh-my-zsh/zshrc e non sono necessari altri passaggi.
Note varie
-
Per tutti gli utenti preesistenti con oh-my-zsh:
cp /usr/share/oh-my-zsh/zshrc ~/.zshrc
- Puoi impostare le impostazioni predefinite OMZ per i nuovi utenti in /usr/share/oh-my-zsh/zshrc
- Gli aggiornamenti automatici sono disabilitati poiché i nuovi utenti non hanno i permessi per aggiornare i file /usr/share/oh-my-zsh
- Per aggiornare oh-my-zsh cd su /usr/share/oh-my-zsh/ ed esegui 'sudo git pull'
- La cache oh-my-zsh verrà gestita per utente all'interno di ciascuna directory utente in ~/.oh-my-zsh-cache/ (creata automaticamente)
Attenzione giusta:questo presuppone un Linux in stile Debian, ma dovrebbe funzionare anche su altre forme. Ciò presuppone anche che tu stia partendo da zero.
Parte 1 , install:
Dovrai installare zsh a livello di sistema e non solo per un utente. (potresti averlo già fatto, ma lo includerò solo per completezza)
assicurati di aver installato zsh, semplicemente:sudo apt-get install zsh
Segui la guida all'installazione di oh-my-zsh oppure puoi:
usa l'arricciatura
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
usa wget
sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"
Parte 2 , Configurazione di zsh quando vengono aggiunti nuovi utenti:
Dovrai fare in modo che i nuovi utenti utilizzino zsh per impostazione predefinita. Nel tuo /etc/adduser.conf
file modifica la riga che dice:
DSHELL=/bin/sh
a:
DSHELL=/bin/zsh
Dovresti cambiarlo anche per il /etc/default/useradd
file, cambia la riga:
SHELL=/bin/sh
a:
SHELL=/bin/zsh
Parte 3 , imposta il tuo tema personalizzato.
Ho un file del tema personalizzato (qui) che volevo che tutti gli utenti del sistema avessero. Innanzitutto, dovresti aggiungere il file al tuo .oh-my-zsh/themes
cartella:
cp your_custom_style.zsh-theme ~/.oh-my-zsh/themes
Successivamente, modifica il tuo .zshrc
file nella tua home directory, cambia il ZSH_THEME="default"
a ZSH_THEME="your_custom_style"
Quindi, ricarica il tuo .zshrc
file con:. ~/.zshrc
Parte 4 , impostando le home directory del nuovo utente.
Dobbiamo inserire tutti i file che vogliamo che i nuovi utenti abbiano nel /etc/skel
directory, perché questo è ciò che il sistema copia quando crea la home directory del nuovo utente. Consulta questa guida per l'amministratore di sistema per i dettagli.
Copia i file del tuo utente (potrebbe essere necessario sudo):
cp -r .oh-my-zsh /etc/skel/
cp .zshrc /etc/skel
Ora sarai in grado di aggiungere nuovi utenti e avranno oh-my-zsh per impostazione predefinita con qualsiasi tema personalizzato desideri che abbiano.
Se vuoi cambiare la shell di tutti gli altri utenti esistenti in zsh, ti consiglio di leggere questa domanda sul serverfault.
Se desideri un'installazione a livello di sistema di Oh-My-Zsh, un approccio conveniente che sovrascrive il minor numero di file è:
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
Modifica /etc/skel/.zshrc
:
- Modifica la riga
export ZSH=$HOME/.oh-my-zsh
(attualmente riga 5) - Cambia la riga in:
export ZSH=/etc/oh-my-zsh
export ZSH_CACHE_DIR=~/.oh-my-zsh/cache
Quindi modifica /etc/default/useradd
e cambia la riga SHELL=...
a SHELL=/bin/zsh
.
Questo è fondamentalmente tutto (ovviamente, git e zsh devono essere già installati).
Per aggiornare un utente preesistente:accedi come loro e cp /etc/skel/.zshrc ~/.zshrc
Aggiornamento: Si prega di non modificarlo. Ho appena eseguito il rollback di una modifica che ha fatto un pasticcio completo!
Accedi come ROOT
Passaggio 1:installa 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
Passaggio 2:installa 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
Passaggio 3:aggiungi extra (facoltativo - Guarda in basso per funzionalità extra)
Passaggio 4:crea un collegamento simbolico
# Create Symbolic Links to /etc/skel
sudo ln /usr/share/oh-my-zsh/zshrc /etc/skel/.zshrc
Passaggio 5:aggiungi oh-my-zsh per root
# Change shell to ZSH for root
echo "$USER" | chsh -s /usr/local/bin/zsh
Passaggio 6:aggiungi oh-my-zsh per l'utente
# 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
O
sudo -i -u username bash << EOF
cp /usr/share/oh-my-zsh/zshrc ~/.zshrc
echo username | chsh -s /usr/local/bin/zsh
EOF
EXTRA:
Cambia tema in 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
Abilita la correzione automatica
sed -i 's/# ENABLE_CORRECTION="true"/ENABLE_CORRECTION="true"/g' /usr/share/oh-my-zsh/zshrc
Abilita i suggerimenti automatici e l'evidenziazione della sintassi
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
Aggiungi colori nord dir
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