在Sublime Text 3

时间:2017-04-04 17:52:15

标签: bash sh sublimetext3

我在macOS Sierra上使用brew安装了bash 4.4.5,并将其用作我的主shell。由于SIP,我不能简单地升级/替换内置的bash 3.2.57,因此它位于我的/usr/local/bin/目录中。

我的.bash_profile中的脚本使用bash 4.x功能,例如关联数组。当我尝试在Sublime Text 3中运行任何构建过程时,它正在加载系统内置bash而不是我自定义安装的bash,并且每次都会发出错误。是否有任何设置或其他方式来更改Sublime使用的shell?

可能有用:

$ which -a bash
/usr/local/bin/bash
/bin/bash
$ bash --version
GNU bash, version 4.4.12(1)-release (x86_64-apple-darwin16.3.0)
$ which -a sh
/usr/local/bin/sh
/bin/sh
$ sh --version
GNU bash, version 4.4.12(1)-release (x86_64-apple-darwin16.3.0)

1 个答案:

答案 0 :(得分:1)

用于执行构建的exec命令包含在Default包中exec.py,并且硬编码为使用/bin/bash执行进程时使用shell_cmd指定命令。

没有用于切换它的配置选项,因此为了使其使用不同版本的bash,您需要使用适当的更改创建Default/exec.py文件的覆盖。最简单的方法是使用PackageResourceViewer打开文件,然后进行更改并保存。

虽然这可行,但请注意,当存在此类包覆盖时,Sublime将专门使用它来代替它正在替换的文件,即使基础文件已被修改。在这种情况下,您不会被告知并可能错过了包装作者引入的错误修复或新功能。

你可以通过OverrideAudit(披露:我是软件包作者)来缓解这个问题,如果软件包升级使底层文件的时间戳比你的覆盖更新,那么你可以提醒你注意被它吸引。

一个较少侵入性的选项是修改你的.bash_profile以检测正在使用的bash版本并选择性地跳过不兼容的命令,但是根据你在该文件中使用的内容,这可能会或者可能会不是一个可行的解决方案。