web-dev-qa-db-ja.com

Macの/ usr / binにシンボリックリンクを作成する方法

環境: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はオプションではありません。

11
user1934428

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....
15
13dimitar