A menos que esté malinterpretando, la respuesta marcada de Caleb es solo la instalación normal por usuario pasos para agregar un archivo .zshrc al directorio skel y cambiar el shell de nuevo usuario predeterminado, pero en realidad no funciona ni responde realmente a la pregunta porque cada usuario todavía requiere el directorio oh-my-zsh/todavía requeriría que cada usuario clone el directorio oh-my-zsh en su propia carpeta, lo que significa que no está realmente instalado en todo el sistema , automáticamente les da un archivo zshrc y cambia el shell predeterminado a zsh, pero sin oh-my-zsh en cada carpeta de usuario, se producirá un error.
Por lo que entiendo de la pregunta, se pregunta cómo instalar oh-my-zsh en todo el sistema es decir, instálelo en UN solo lugar y no requiera jugar manualmente con cada nuevo usuario/tener un clon de git de oh-my-zsh en cada directorio de usuario. Suponiendo que ese sea el caso, esto es lo que hice basado en el paquete AUR de Arch Linux que normalmente uso pero estaba buscando lo mismo en un servidor centos, sin embargo, esto se puede hacer en cualquier distribución. El mérito es de MarcinWieczorek y los demás mantenedores , acabo de adaptar lo siguiente para que pueda hacer lo mismo en distribuciones que no son de arquitectura.
Si ya tiene oh-my-zsh instalado en la raíz, vaya al Paso 3. Esto no es específico de la distribución, solo usa el archivo de parche AUR para zshrc
Paso #1
Instalar zsh por supuesto
Paso #2
Instale oh-my-zsh como root como de costumbre (muestra el método wget, vea la respuesta de Calebs para obtener una alternativa)
sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"
Paso #3
Mueva la instalación a /usr/share para que sea en todo el 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
Ahora oh-my-zsh está instalado globalmente y el usuario solo necesita ese archivo zshrc. así que AHORA es donde entra la respuesta de Caleb, aunque solo haga lo siguiente, ya que /etc/adduser.conf solo está en Debian, mientras que el siguiente debe ser independiente de la distribución.
Paso #4
Configúralo para que sea el predeterminado para los nuevos usuarios
# 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
Ahora eso es un verdad instalación de oh-my-zsh con todos los nuevos usuarios aplicándolo automáticamente con la configuración de /usr/share/oh-my-zsh/zshrc y no se necesitan otros pasos.
Notas varias
-
Para cualquier usuario preexistente con oh-my-zsh:
cp /usr/share/oh-my-zsh/zshrc ~/.zshrc
- Puede establecer valores predeterminados de OMZ para nuevos usuarios en /usr/share/oh-my-zsh/zshrc
- Las actualizaciones automáticas están deshabilitadas ya que los nuevos usuarios no tienen permisos para actualizar los archivos /usr/share/oh-my-zsh
- Para actualizar oh-my-zsh simplemente haga un cd en /usr/share/oh-my-zsh/ y ejecute 'sudo git pull'
- El caché de oh-my-zsh se manejará por usuario dentro de cada directorio de usuario en ~/.oh-my-zsh-cache/ (creado automáticamente)
Advertencia justa:esto supone un estilo Linux de Debian, pero también debería funcionar en otras formas. Esto también supone que está comenzando desde cero.
Parte 1 , la instalación:
Deberá instalar zsh en todo el sistema, y no solo para un usuario. (Es posible que ya haya hecho esto, pero lo incluiré solo para ser completo)
asegúrese de haber instalado zsh, simplemente:sudo apt-get install zsh
Siga la guía de instalación de oh-my-zsh o puede:
usar rizo
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
usar wget
sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"
Parte 2 , Configuración de zsh cuando se agregan nuevos usuarios:
Deberá configurarlo para que los nuevos usuarios utilicen zsh de forma predeterminada. En tu /etc/adduser.conf
archivo edite la línea que dice:
DSHELL=/bin/sh
a:
DSHELL=/bin/zsh
También deberías cambiarlo por el /etc/default/useradd
archivo, cambie la línea:
SHELL=/bin/sh
a:
SHELL=/bin/zsh
Parte 3 , establezca su tema personalizado.
Tengo un archivo de tema personalizado (aquí) que quería que tuvieran todos los usuarios del sistema. Primero, debe agregar el archivo a su .oh-my-zsh/themes
carpeta:
cp your_custom_style.zsh-theme ~/.oh-my-zsh/themes
A continuación, edite su .zshrc
archivo en su directorio de inicio, cambie el ZSH_THEME="default"
a ZSH_THEME="your_custom_style"
Luego, recarga tu .zshrc
archivo con:. ~/.zshrc
Parte 4 , configurando los directorios de inicio del nuevo usuario.
Necesitamos colocar los archivos que queremos que tengan los nuevos usuarios en el /etc/skel
directorio, porque esto es lo que el sistema copia cuando está creando el directorio de inicio del nuevo usuario. Consulte esta guía de administración del sistema para obtener más detalles.
Copie los archivos de su usuario (es posible que deba sudo):
cp -r .oh-my-zsh /etc/skel/
cp .zshrc /etc/skel
Ahora podrá agregar nuevos usuarios y ellos tendrán oh-my-zsh por defecto con cualquier tema personalizado que desee que tengan.
Si desea cambiar el shell de todos los demás usuarios existentes a zsh, le recomendaría leer esta pregunta de falla del servidor.
Si desea una instalación de todo el sistema de Oh-My-Zsh, un enfoque conveniente que sobrescribe la menor cantidad de archivos es:
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
Editar /etc/skel/.zshrc
:
- Edite la línea
export ZSH=$HOME/.oh-my-zsh
(actualmente línea 5) - Cambia la línea para que sea:
export ZSH=/etc/oh-my-zsh
export ZSH_CACHE_DIR=~/.oh-my-zsh/cache
Luego edite /etc/default/useradd
y cambie la línea SHELL=...
a SHELL=/bin/zsh
.
Eso es básicamente todo (por supuesto, git y zsh ya deben estar instalados).
Para actualizar un usuario preexistente:inicie sesión como ellos y cp /etc/skel/.zshrc ~/.zshrc
Actualización: Por favor, no edites esto. ¡Acabo de revertir una edición que la arruinó por completo!
Iniciar sesión como ROOT
Paso 1:Instalar 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
Paso 2:Instalar 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
Paso 3:Añadir extra (Opcional - Mirar en la parte inferior para características adicionales)
Paso 4:Crear enlace simbólico
# Create Symbolic Links to /etc/skel
sudo ln /usr/share/oh-my-zsh/zshrc /etc/skel/.zshrc
Paso 5:Agrega oh-my-zsh para root
# Change shell to ZSH for root
echo "$USER" | chsh -s /usr/local/bin/zsh
Paso 6:Agrega oh-my-zsh para el usuario
# 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:
Cambiar el tema a 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
Habilitar corrección automática
sed -i 's/# ENABLE_CORRECTION="true"/ENABLE_CORRECTION="true"/g' /usr/share/oh-my-zsh/zshrc
Habilitar sugerencias automáticas y resaltado de sintaxis
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
Agregar colores de directorio nord
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