Lingkungan: OSX Sierra, Darwin Kernel Versi 16.3.0
Root Problem: Saya ingin menggunakan banyak skrip shell di repositori pusat, yang memiliki #! / Usr / bin / zsh. Di Mac saya, zsh ada di / bin / zsh.
Solusi yang dicoba: Saya ingin membuat tautan simbolis
ln -s /bin/zsh /usr/bin/zsh
Akun pengguna saya memiliki hak admin, tetapi saya bukan root, dan saya lebih suka untuk tidak mengaktifkan pengguna root di Mac ini. Karena itu saya pertama kali melakukan a
sudo su
untuk mendapatkan shell dengan hak akses root dan kemudian dieksekusi perintah ln . Namun saya masih mendapatkan pesan kesalahan ln: / usr / bin / zsh: Operasi tidak diizinkan .
Pertanyaan:
Mengapa saya mendapatkan pesan kesalahan ini?
Apa yang harus saya lakukan untuk membuat tautan?
Apakah ada cara yang lebih baik untuk mencapai tujuan awal saya? Perhatikan bahwa memperbaiki #! garis bukanlah suatu pilihan.
/usr/bin/zsh
ke/bin/zsh
?Jawaban:
Anda mendapatkan pesan ini karena Perlindungan Integritas Sistem Apple . Perlindungan Integritas Sistem mencakup perlindungan untuk bagian-bagian sistem ini:
Jalur dan aplikasi yang aplikasi dan installer pihak ketiga dapat terus menulis untuk memasukkan:
Ini berarti Anda cukup membuat tautan simbolis
/usr/local/bin
(masih dalam $ PATH Anda).NAMUN, tampaknya Anda perlu membuat tautan simbolik secara khusus
/usr/bin
. Anda dapat mencapainya dengan menonaktifkan Perlindungan Integritas Sistem (tolong jangan lakukan itu, cukup edit skripnya ..). Anda dapat menonaktifkannya dengan (Saya belum mengujinya sendiri !!!):sumber
#!/usr/bin/zh
sebagai shell, jadi solusi yang ia cari adalah menautkan lokasi ini ke tempat shell sebenarnya berada, tetapi seperti yang Anda katakan ia dilindungi dari melakukan ini. Kecuali jika proteksi di-bypass, satu-satunya solusi adalah mengedit skrip dalam jumlah banyak.