2010-11-28 79 views
0

問題中加載默認的配置文件的bash的實例: 我希望能夠從我的可可應用程序(OS X)與加載的所有正常的配置文件運行bash的實例(〜/。 bash_profile等)。我不要想手動加載配置文件,因爲我想有一個默認的bash實例,是完全相同的,你會得到一個發射終端。從那裏,我想要檢索一些預定義的環境變量(Ruby版本管理器的變量)。如何獲得客觀-C

我試過的東西: 我已經嘗試了一些解決方案,但沒有成功。讓我一一列舉:

  1. NSTask
  2. 系統()調用

每一個解決方案,我試圖執行 「/ bin/sh的-l」 有裝載作爲當前一個bash實例用戶名...不幸的是它沒有工作。

+0

執行如何? – 2010-11-28 23:39:24

+0

你是什麼意思執行如何?我作爲啓動程序的用戶執行程序,我不分流程 – 2010-11-28 23:49:58

回答

2

當您運行bash作爲sh時,它運行在兼容模式下,它不會讀取.bash_profile。如果你想運行bash然後運行/bin/bash(或者,如果你希望其他人使用你的應用程序,確保你考慮什麼殼用戶選擇。)

0

您可以使用命令行選項「--login」告訴bash表現爲登錄shell。

傳統上,如果shell的基名稱以短劃線開頭,則shell將充當登錄shell。

您也許能獲得所需的效果:

bash --login -c 'echo $RUBY_VARIABLE_OF_INTEREST' 

如果您正在使用popen()這樣做,你可以閱讀從shell輸出。