環境:OSX Sierra、Darwin Kernelバージョン16.3.0
根本的な問題:#!/ usr/bin/zshがある中央リポジトリで多数のシェルスクリプトを使用したい。私のMacでは、zshは/ bin/zshにあります。
解決策の試み:シンボリックリンクを作成したい
ln -s /bin/zsh /usr/bin/zsh
私のユーザーアカウントには管理者権限がありますが、私はルートユーザーではないので、このMacでルートユーザーを有効にしたくありません。したがって、私は最初に
Sudo su
root権限を持つシェルを取得し、次にlnコマンドを実行します。ただし、エラーメッセージln:/ usr/bin/zsh:Operation not allowedは引き続き表示されます。
質問:
このエラーメッセージが表示されるのはなぜですか?
リンクを作成するにはどうすればよいですか?
私の元の目標を達成するためのより良い方法はありますか? #を修正することに注意してください。 linesはオプションではありません。
Appleの システム整合性保護 が原因でこのメッセージが表示されます。システム整合性保護には、システムの次の部分の保護が含まれます。
/System
/usr
/bin
/sbin
Apps that are pre-installed with OS X
サードパーティのアプリやインストーラーが引き続き書き込めるパスとアプリ:
/Applications
/Library
/usr/local
これは、シンボリックリンクを/usr/local/bin
に作成できることを意味します($ PATHにまだあります)。
しかし、/usr/bin
にシンボリックリンクを作成する必要があるようです。これは、システム整合性保護を無効にすることで実現できます(実行しないでください。スクリプトを編集してください。)。あなたはそれを無効にすることができます(私は自分でテストしていません!!!):
Click the menu.
Select Restart...
Hold down command-R to boot into the Recovery System.
Click the Utilities menu and select Terminal.
Type csrutil disable and press return.
Close the Terminal app.
Click the menu and select Restart....