2010-11-28 76 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输出。