2012-11-20 50 views
2

背景交互:OS X GUI Cocoa程序與外殼

我們正在開發的房子中僅使用可可的應用程序,以幫助我們一些基本的系統管理員任務和複雜的網站部署。這個應用程序基本上是圍繞許多不同的bash shell命令的封裝。這些命令的輸出有時需要解析或顯示給用戶。

我們玩過NSTask並能夠啓動一些腳本。然而,這看起來有些麻煩(需要設置確切的路徑,分別傳遞每個參數等)。如果這實際上是首選方法,我們可以以這種方式使用NSTask。

目前最大的挑戰是設置shell環境。我們與許多紅寶石寶石和程序進行交互,並使用capistrano進行部署。

的問題是:

我們如何與環境設置等的用戶殼互動? (別名,rvm,紅寶石,路徑)

+0

是你的「可可應用」一個GUI應用程序(按鈕和窗口和獲獎情況),或者是一個從通過Terminal.app顯示shell稱爲工具? –

+0

是的,它是一個GUI應用程序 - 我已經更新了問題標題,以反映這 –

+0

到目前爲止,你有三個「關閉這個問題」的投票(不是來自我,雖然),雖然我認爲投票結束的人沒有仔細看在你的問題:它***是一個編程問題,你問。如果沒有其他人做,我可能會在今天晚些時候回答它,但我認爲需要進行一些研究,看看NSTask自動採集哪些環境變量,甚至是調用「system()」。 –

回答

1

你會在Terminal.app的shell中看到的環境變量幾乎侷限於你在終端上下文中使用的任何shell。它沒有被「NSTask」自動獲取。

但是...你有選擇。 Some of them are described in answers to this related question

可以設置更普遍的環境變量獲得通過「~/.launchd.conf」文件拾起NSTask,或者您可以設置的「NSTask」外殼相匹配的一個在終端(這意味着你拿起。 bashrc或.profile或其他初始化路徑)通過「[NSTask setLaunchPath:]」(其中啓動路徑是您的shell)。

當然你也可以在你的工具中調用「system()」。這也可能會拾取「~/.launchd.conf」文件中設置的變量。

More information on environment variables is available in this question.

+0

完美!你指出我的解決方案對我來說很好...通過'[set setLaunchPath:@「/ bin/bash」];' –