Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 无法在/usr/bin内部创建符号链接,即使与sudo一样_Macos_Terminal_Symlink - Fatal编程技术网

Macos 无法在/usr/bin内部创建符号链接,即使与sudo一样

Macos 无法在/usr/bin内部创建符号链接,即使与sudo一样,macos,terminal,symlink,Macos,Terminal,Symlink,当我尝试对我的/usr/bin文件夹中的二进制文件进行符号链接时,我得到一个操作不允许的错误: sudo ln -s /usr/bin/python2.7 /usr/bin/python2 ln: /usr/bin/python2: Operation not permitted 即使是sudo,我也会遇到这个错误。为什么我不能符号链接到/usr/bin? El Capitan的新功能可以防止对OS X的几个核心部分进行更改,包括大多数/usr/,甚至是根用户 如何仍将可执行文件添加到路径?

当我尝试对我的/usr/bin文件夹中的二进制文件进行符号链接时,我得到一个操作不允许的错误:

 sudo ln -s /usr/bin/python2.7 /usr/bin/python2
ln: /usr/bin/python2: Operation not permitted
即使是sudo,我也会遇到这个错误。

为什么我不能符号链接到
/usr/bin
? El Capitan的新功能可以防止对OS X的几个核心部分进行更改,包括大多数
/usr/
,甚至是根用户

如何仍将可执行文件添加到路径? 本地定制,例如您正在做的事情,属于
/usr/Local
。默认情况下,路径
/usr/local/bin
不存在,但您可以创建它并将自定义二进制文件(和符号链接)放入其中:

请注意,虽然默认情况下,
/usr/local/bin
不存在,但它位于默认路径中,因此一旦创建它,就会在其中搜索命令

禁用SIP
也可以禁用系统完整性保护,但通常最好保持打开状态,并在更合适的位置进行自定义。Apple Stack Exchange问题有更多关于此的详细信息:。

重新启动系统->长按cmd+R 从实用程序菜单中选择一个终端 键入以下命令csrutil disable
关闭终端并重新启动系统。

我在Mac OS High Sierra as中为Sublime Text 3创建了符号链接

sudo ln -s /Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl /usr/local/bin/
我还试图在“/usr/bin”中创建符号链接,但操作不允许

然后我在“/usr/local/bin”中创建了符号链接,没有出现错误。符号链接工作正常。只需确保“/usr/local/bin”在路径中


因此,对“/usr/bin”的访问似乎受到限制。

请尝试先运行
sudo su
,然后运行带根级别的命令

  1. Create a symbolic link to psql in usr/bin (for mac only)
         command: sudo ln -s /Applications/Postgres.app/Contents/Versions/latest/bin/psql /usr/bin/psql 
如果由于权限问题,您无法创建符号链接,这将是由于“csrutil”。禁用csrutil后,您可以创建符号链接。 按照以下步骤禁用CSRUtill:

重新启动你的Mac。 在OSX启动之前,按住Command-R并按住它,直到看到一个苹果图标和一个进度条。释放。这会让你恢复健康。 从实用程序(顶部栏上)菜单中,选择终端。 在提示下键入以下内容,然后按Return:csrutil disable 终端应显示SIP已禁用的消息。
从 菜单中,选择重新启动。

您的1.OS 2.发行版是什么3。文件系统?Mac OSX El Capitan 10.11.4是否尝试过以下操作:?这将禁用系统完整性保护。也许最好找到另一个更安全的解决方案。我个人认为这是正确的解决方案。我认为操作系统没有理由阻止我将此目录或任何目录中的内容符号化为
sudo
。也许完整的解决方案是禁用它,放置符号链接并重新启用csrutil?这不会解决OPs问题。问题与现代MacOS系统上的系统完整性保护有关。如果我这样做并运行
python
,它将调用
/usr/bin/python
下的文件,而不是
/usr/local/bin/python
@DanielW。您的
路径设置为什么?通常,
/usr/local/bin
将列在
/usr/bin
之前,因此它将优先。我必须重新启动并使用
brew链接
进行修改,然后它才能正常工作,但您的
路径设置非常正确。奇怪。在路径设置中,在/usr/bin之前有/usr/local/bin/usr/bin/python指向v2.7,/usr/local/bin/python指向v3.9。当我运行命令“python--version”时,它返回“version 2.7”。优先。。。什么优先级?@muztheaxe您有覆盖python的函数或别名吗?如果您使用的是bash,请运行
typepython
(或者
typea-python
,查看可能含义的完整列表);如果您使用的是zsh,请运行
whence-python
(或
whence-a-python
)。
  1. Create a symbolic link to psql in usr/bin (for mac only)
         command: sudo ln -s /Applications/Postgres.app/Contents/Versions/latest/bin/psql /usr/bin/psql