1 votos

Sincronizar o compartir .zshrc entre cuentas

Tengo una cuenta de usuario estándar (en Mojave usando zsh shell) y basado en Wiki de Gentoo He añadido esto a mi .zshrc para mostrar un aviso como [user@computer] ~ $

if [[ $UID == 0 ]]; then
   PS1="[%n@%M] %~ # "
else
   PS1="[%n@%M] %~ $ "
fi

He cambiado el shell Root a zsh con sudo chsh -s /bin/zsh pero sudo su da un aviso incorrecto (presumiblemente por defecto) a no ser que vuelva a poner mi .zshrc :

[hali@A1398] ~ $ sudo su
A1398# echo $PS1
%m%#
A1398# source .zshrc
[root@A1398] /Users/hali #

Basado en perfil de bash para usuarios Root y ¿Cuáles son las diferencias prácticas entre Bash y Zsh? He copiado mi .zshrc para que Root lo utilice con cp ~/.zshrc /var/root/

Del mismo modo, también tengo una cuenta de administrador oculta configurada de acuerdo con esto Documento de Apple y así su admin también muestra su mensaje por defecto a menos que también haga cp ~/.zshrc /var/admin/

Si copio ambos funciona como quiero - el usuario( %n ) se muestra antes del nombre del ordenador ( %M ):

[hali@A1398] ~ $ sudo cp .zshrc /var/root/
[hali@A1398] ~ $ sudo cp .zshrc /var/admin/
[hali@A1398] ~ $ sudo su
[root@A1398] /Users/hali # su admin
[admin@A1398] /Users/hali $ exit
[root@A1398] /Users/hali # exit
[hali@A1398] ~ $

¿Hay alguna forma de utilizar una copia de .zshrc para que estas tres cuentas compartan o de alguna manera las mantengan automáticamente sincronizadas a medida que hago más cambios en este archivo?

2voto

Alex Puntos 316

Utilice un enlace simbólico. Utiliza el ln comando en el terminal

ln -s ~/.zshrc /var/root/.zshrc

Puedes sustituir /var/Root por lo que necesites. Esto creará un archivo llamado .zsrhc en /var/Root que está vinculado a la copia original en su directorio personal. Tenga en cuenta que puede necesitar sudo antes de esto si no tiene permisos de archivo.

1voto

Michael Zhou Puntos 167

Zsh leerá hasta 5 archivos rc "globales" al inicio dependiendo de su clasificación de shell, es decir, login o no login, interactivo o no interactivo y su contenido está disponible para todos los usuarios de zsh. Estos archivos son /etc/zshenv, /etc/zprofile, /etc/zshrc, /etc/zlogin, y /etc/zlogout. Se leen en conjunto con 5 "archivos de puntos", que normalmente se encuentran en tu directorio personal .zshenv, .zprofile, .zshrc, .zshlogin y .zshlogout. En tu caso, /etc/zshrc sería un buen candidato.

Puedes reemplazar

if [[ $UID == 0 ]]; then
   PS1="[%n@%M] %~ # "
else
   PS1="[%n@%M] %~ $ "
fi

con esta línea

PROMPT='[%n@%M] %~ %(!.#.$) '

El %(!.#.$) es una declaración condicional que dice:

si el shell es privilegiado (!) entonces coloca el texto # al final de la indicación, si no, coloque un $ al final del mensaje. (Esta sintaxis se parece mucho a csh sintaxis).

Que lo disfrutes.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X