2

背景:

我们正在开发一个仅供内部使用的可可应用程序,以帮助我们完成一些基本的系统管理任务和复杂的网站部署。这个应用程序基本上是许多不同 bash shell 命令的包装器。这些命令的输出有时需要解析或显示给用户。

我们玩过 NSTask 并且能够启动一些脚本。但是,这似乎有些麻烦(需要设置确切的路径,分别传入每个参数,等等......)。如果这实际上是首选方法,我们可以以这种方式使用 NSTask。

迄今为止最大的挑战是设置 shell 环境。我们与许多 ruby​​ gems 和程序进行交互,并使用 capistrano 进行部署。

问题是:

我们如何像用户一样通过环境设置与 shell 交互?(别名、rvm、ruby、路径)

4

1 回答 1

1

您将在 Terminal.app 的 shell 中看到的环境变量几乎仅限于您在终端上下文中使用的任何 shell。NSTask它不会被 " " 自动拾取。

但是……你确实有选择。其中一些在此相关问题的答案中进行了描述

您可以通过“”文件设置更多由 NSTask 拾取的通用环境变量,或者~/.launchd.conf可以设置“”的外壳NSTask以匹配终端中的那个(这意味着您选择 .bashrc 或 .profile 或任何初始化路径)通过“ [NSTask setLaunchPath:]”(启动路径是你的shell)。

当然,您也可以system()从您的工具中调用“”。~/.launchd.conf这也可能会选取“ ”文件中设置的变量。

此问题中提供了有关环境变量的更多信息。

于 2012-11-21T05:44:23.843 回答