即便我們用了sudo
還是沒有權限,例如我們希望修改/usr/bin
目錄下的文件名
$ sudo mv /usr/bin/vim /usr/bin/vim-old
Password:
mv: rename vim to vim-old: Operation not permitted
這是因為,電腦啟用了SIP(System Integrity Protection),增加了rootless機制,即使在root權限下依然無法修改文件。
不推薦方案:關閉SIP
如果我們還是需要修改目錄/usr/bin
目錄下的文件,就需要關閉SIP,具體步驟下:
- 重啟,過程中按住 command+R,進入保護模式
- 打開terminal終端,輸入
csrutil disable
3. 重啟,即可對 usr/bin 目錄下文件進行修改
文件修改完之后,再重新打開SIP,步驟與上面相同,只是執行的命令換成
csrutil enable
推薦方案:alias
其實還是盡量不要去關閉SIP,比較簡單的辦法是在zsh或bash的配置文件中添加alias
,例如我們用brew安裝了vim,然后我們需要用覆蓋mac自帶的vim,以zsh為例,我們可以在文件~/.zshrc
中添加如下代碼
alias vim="/usr/local/bin/vim"
alias vimdiff="/usr/local/bin/vimdiff"
alias vi="/usr/local/bin/vi"
alias view="/usr/local/bin/view"
alias vimdiff="/usr/local/bin/vimdiff"
alias vimtutor="/usr/local/bin/vimtutor"
重新登陸,或執行下面命令,讓alias生效,
source ~/.zshrc