您的位置:首页 > 运维架构

无意中更改 xcode-select 默认值后,opendiff 命令无法调用

2014-06-11 11:13 274 查看
xcode-select 的默认值为
/Applications/Xcode.app/Contents/Developer

之前不知道乱改,无意中将默认值改成了 /Applications/Xcode.app

用了一段时间后我还没发现有什么改变

直到今天我再 Versions 里面对比代码变更的时候才发现,点不开 FileMerge.app

(Versions.app 是通过 /usr/bin/opendiff 来间接调用 FileMerge.app 的)

命令行提示信息为:

Error: Can't run /Applications/Xcode.app/usr/bin/opendiff (no such file).

我在网上搜了很久都没有找到相关的信息,可能这种情况出现的却是比较少吧~

之前 sublime text 2 调用 ctags 插件时差不多也是这样的情况,

我当时是直接修改 ctags 插件中的 ctags.py 文件才弄好的,

仔细想来,其实和这里的问题如出一辙,

因为由之前 ctags 的经验,我很快的检查了一下 /usr/bin 目录,

发现这个目录中是存在 opendiff 可执行文件的,

然后再控制台键入 which opendiff
whereis opendiff 命令,

反馈的结果都指向为 /usr/bin/opendiff

这样的话,情况就很明了了,百分百是路径拼接的问题

但就为何 /usr/bin/opendif 前面被追加了一个 “/Applications/Xcode.app” 我也是百思不得其解,

xcode-select 是我无意间想到的一个命令,怎么说呢,就像第六感吧,

结果问题还真出在这里,他有 -h, -print-path, -switch 这几个最常用的命令

我试着用 -print-path 打印了一下它的指向,并在同事的机器上也试了了一下,

发现我这里果然存在猫腻,正常同事电脑里面是 /Applications/Xcode.app/Contents/Developer

而我不正常的电脑里则是 /Applications/Xcode.app

我用 xcode-select -swtich 命令切换到 /Applications/Xcode.app/Contents/Developer 以后

Versions 里面果然可以顺利点出 FileMerge 了,

至此延续了个把星期的问题总算是水落石出(时间起点为 ctags 遇到问题的时候)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: