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


11

環境:OSX Sierra、Darwin Kernelバージョン16.3.0

根本的な問題:#!/ usr / bin / zshがある中央リポジトリで多数のシェルスクリプトを使用したい。私のMacでは、zshは/ bin / zshにあります。

解決策の試み:シンボリックリンクを作成したい

ln -s /bin/zsh /usr/bin/zsh

私のユーザーアカウントには管理者権限がありますが、私はrootではないので、このMacでrootユーザーを有効にしたくありません。したがって、私は最初に

sudo su

root権限を持つシェルを取得してから、lnコマンドを実行します。ただし、それでもエラーメッセージln:/ usr / bin / zsh:Operation not allowedが表示されます。

質問:

  • このエラーメッセージが表示されるのはなぜですか?

  • リンクを作成するにはどうすればよいですか?

  • 私の元の目標を達成するためのより良い方法はありますか?#を修正することに注意してください。linesはオプションではありません。


コピー/usr/bin/zshしてみません/bin/zshか?
Lenniey 2017年

1
@Lennieyそのようにして、オリジナルと一緒に更新されないルーズコピーを作成しています。
マリオ

@Mario whelp ...もちろんあなたは正しい。OP:絶対にしないでください!;)
Lenniey 2017年

1
@Lenniey-コピーは逆方向に進む必要があります!そして、あなたがコピーできれば、あなたはリンクすることができます。
AFH

@AFHええ、私のコメントは完全に混乱しています...
Lenniey

回答:


15

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....

2
ポイントを逃しました:質問者は#!/usr/bin/zhシェルとして指定するスクリプトを持っているので、彼が求める解決策はこの場所をシェルが実際に存在する場所にリンクすることですが、あなたが言うように彼はこれを実行しないように保護されています。保護がバイパスされない限り、唯一の解決策はスクリプトのバッチ編集であると思われます。
AFH 2017年

はい、そうです、彼はスクリプトを編集する必要があります(これは単一のコマンドで発生する可能性があります)。
13 dimitar 2017年

@Dimitarは質問を見て:私の元の目標を達成するためのより良い方法はありますか?#を修正することに注意してください。linesはオプションではありません。
Lenniey 2017年

1
メモを取って、私は私の答えを変更しました
13dimitar 2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.