2017-04-04 344 views
1

我在macOS Sierra上使用brew安裝了bash 4.4.5,並將其用作我的主外殼。由於SIP,我不能簡單地升級/替換內置的bash 3.2.57,因此它位於我的/usr/local/bin/目錄中。在Sublime Text中設置默認外殼二進制位置3

我在我的.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) 
+0

運行構建的文件'Default \ exec.py'被硬編碼爲MacOS和Linux使用'/ bin/bash'。乍一看,我認爲你必須覆蓋該文件,而不是將它指向'/ usr/local/bin/bash'。另一種方法是修改'.bash_profile',以便測試例如.bash_profile的值。 '$ BASH_VERSINFO'並跳過任何與bash 4相關的東西。 – OdatNurd

+0

如果我只是更改該文件,會有什麼我不得不考慮的嗎? – Julien

+0

如果您重寫它,即使基礎文件被修改(在本例中是通過新版本的Sublime Text),崇高將使用您的重寫,而不會警告您正在發生這種情況。在這種情況下,如果修復了一些錯誤或新功能,您仍然會使用舊版本。只要你意識到這種分歧,你應該沒問題。 – OdatNurd

回答

1

被用來執行建立包含在Default封裝​​,並且是exec命令硬編碼使用shell_cmd時指定要使用/bin/bash執行處理命令。

沒有配置選項來切換它,因此爲了讓它使用不同版本的bash,您需要創建一個覆蓋Default/exec.py文件並進行相應更改的覆蓋。最簡單的方法是使用PackageResourceViewer打開文件,然後進行更改並保存。

儘管這會起作用,但請注意,如果存在這樣的包裝覆蓋,Sublime將專門用它代替它所替換的文件,即使底層文件已被修改。在這種情況下,您不會被告知,並且可能錯過了軟件包作者引入的錯誤修復或新功能。

您可以通過OverrideAudit(披露:我是軟件包作者)來緩解這個問題,除此之外,如果軟件包升級使底層文件的時間戳比您的覆蓋更新,那麼它會警告您,以便您的注意力被吸引它。

一個不太乾擾的選項是修改您的.bash_profile以檢測正在使用的bash的版本並選擇性地跳過不兼容的命令,但根據您在該文件中使用的內容,這可能是也可能不是可行的解決方案。