Umgebung: OSX Sierra, Darwin Kernel Version 16.3.0
Grundproblem: Ich möchte eine Reihe von Shell-Skripten in einem zentralen Repository verwenden, die ein #! / Usr / bin / zsh haben. Auf meinem Mac befindet sich das zsh in / bin / zsh.
Lösungsversuch: Ich möchte eine symbolische Verknüpfung erstellen
ln -s /bin/zsh /usr/bin/zsh
Mein Benutzerkonto hat Administratorrechte, aber ich bin kein Root und möchte den Root-Benutzer auf diesem Mac nicht aktivieren. Deshalb habe ich zuerst eine gemacht
sudo su
um eine Shell mit Root-Rechten zu erhalten und dann den Befehl ln auszuführen. Ich erhalte jedoch immer noch die Fehlermeldung ln: / usr / bin / zsh: Operation nicht erlaubt .
Fragen:
Warum erhalte ich diese Fehlermeldung?
Was müsste ich tun, um den Link zu erstellen?
Gibt es einen besseren Weg, um mein ursprüngliches Ziel zu erreichen? Beachten Sie, dass das #! Linien ist keine Option.
/usr/bin/zsh
nach/bin/zsh
?Antworten:
Sie erhalten diese Meldung aufgrund des Systemintegritätsschutzes von Apple . Der Systemintegritätsschutz umfasst den Schutz für diese Teile des Systems:
Pfade und Apps, die Apps und Installationsprogramme von Drittanbietern weiterhin schreiben können, umfassen:
Dies bedeutet, dass Sie einfach einen symbolischen Link in erstellen können
/usr/local/bin
(er befindet sich immer noch in Ihrem $ PATH).ABER es scheint, dass Sie speziell die symbolische Verknüpfung in erstellen müssen
/usr/bin
. Sie können dies erreichen, indem Sie den Systemintegritätsschutz deaktivieren (bitte tun Sie es nicht, bearbeiten Sie einfach die Skripte ..). Sie können es deaktivieren durch (ich habe es nicht selbst getestet !!!):quelle
#!/usr/bin/zh
als Shell angeben. Die Lösung, die er sucht, besteht darin, diesen Speicherort mit dem Ort zu verknüpfen, an dem sich die Shell tatsächlich befindet. Wie Sie sagen, ist er jedoch davor geschützt. Wenn der Schutz nicht umgangen wird, scheint die einzige Lösung eine Stapelbearbeitung der Skripte zu sein.