Entorno: OSX Sierra, Darwin Kernel Versión 16.3.0
Problema raíz: quiero usar un montón de scripts de shell en un repositorio central, que tienen un #! / Usr / bin / zsh. En mi Mac, el zsh está en / bin / zsh.
Intento de solución: quiero crear un enlace simbólico
ln -s /bin/zsh /usr/bin/zsh
Mi cuenta de usuario tiene derechos de administrador, pero no soy root, y preferiría no habilitar al usuario root en esta Mac. Por lo tanto, primero hice un
sudo su
para obtener un shell con privilegios de root y luego ejecutar el comando ln . Sin embargo, sigo recibiendo el mensaje de error ln: / usr / bin / zsh: operación no permitida .
Preguntas:
¿Por qué recibo este mensaje de error?
¿Qué debería hacer para crear el enlace?
¿Hay una mejor manera de lograr mi objetivo original? Tenga en cuenta que la fijación de la #! Las líneas no son una opción.
/usr/bin/zsh
a/bin/zsh
?Respuestas:
Recibe este mensaje debido a la Protección de integridad del sistema de Apple . La Protección de integridad del sistema incluye protección para estas partes del sistema:
Las rutas y aplicaciones que las aplicaciones e instaladores de terceros pueden seguir escribiendo para incluir:
Esto significa que simplemente puede crear un enlace simbólico en
/usr/local/bin
(todavía está en su $ PATH).PERO, parece que específicamente necesitas crear el enlace simbólico
/usr/bin
. Puede lograrlo deshabilitando la Protección de integridad del sistema (por favor no lo haga, solo edite los scripts ...). Puede deshabilitarlo (¡no lo he probado yo mismo!):fuente
#!/usr/bin/zh
como el shell, por lo que la solución que busca es vincular esta ubicación a donde reside el shell, pero como dices, está protegido de hacerlo. A menos que se omita la protección, la única solución parecería ser una edición por lotes de los scripts.