背景:
我们正在开发一个内部使用的可可应用程序来帮助我们完成一些基本的系统管理员任务和复杂的网站部署。这个应用程序基本上是许多不同的bash shell命令的包装器。这些命令的输出有时需要解析或显示给用户。
我们已经玩过NSTask并且能够启动一些脚本。但是,这看起来有些麻烦(需要设置确切的路径,分别传递每个参数等等)。如果这实际上是首选方法,我们可以用这种方式使用NSTask。
到目前为止,最大的挑战是建立shell环境。我们与许多红宝石宝石和程序进行交互,并使用capistrano进行部署。
问题是:
我们如何通过像用户这样的环境设置与shell进行交互? (别名,rvm,ruby,路径)
答案 0 :(得分:1)
您将在Terminal.app中的shell中设置的环境变量几乎局限于您在终端上下文中使用的任何shell。它不会被“NSTask
”自动拾取。
但是......你确实有选择权。 Some of them are described in answers to this related question
您可以设置更多通用环境变量做通过“~/.launchd.conf
”文件获取NSTask,或者您可以将“NSTask
”的shell设置为匹配终端中的那个(这意味着你选择.bashrc或.profile或任何初始化路径)通过“[NSTask setLaunchPath:]
”(其中启动路径是你的shell)。
当然,您也可以在工具中调用“system()
”。这也可以选取“~/.launchd.conf
”文件中设置的变量。
More information on environment variables is available in this question.