背景:
我们正在开发一个仅供内部使用的可可应用程序,以帮助我们完成一些基本的系统管理任务和复杂的网站部署。这个应用程序基本上是许多不同bash shell命令的包装器。这些命令的输出有时需要解析或显示给用户。
我们已经尝试过NSTask,并且能够启动一些脚本。然而,这看起来有点麻烦(需要设置确切的路径,分别传入每个参数,等等)。如果这确实是首选的方法,我们可以这样使用NSTask。
到目前为止,最大的挑战是设置shell环境。我们与许多ruby gem和程序进行交互,并使用capistrano进行部署。
问题是:
我们如何通过像用户一样的环境设置来与shell交互?(别名、rvm、拼音、路径)
发布于 2012-11-21 13:44:24
您将看到在Terminal.app中的shell中设置的环境变量在很大程度上受限于您在终端上下文中使用的shell。它不会被"NSTask“自动拾取。
但是..。你是有选择的。Some of them are described in answers to this related question。
您可以通过"~/.launchd.conf“文件设置更多的通用环境变量,或者您可以通过"NSTask”文件设置“NSTask”的外壳程序,使其与通过"[NSTask setLaunchPath:]“(其中启动路径是您的外壳程序)的终端(这意味着您选择.bashrc或.profile或任何初始化路径)中的外壳程序相匹配。
当然,你也可以在你的工具中调用"system()“。这也可以获取在"~/.launchd.conf“文件中设置的变量。
More information on environment variables is available in this question.
https://stackoverflow.com/questions/13478755
复制相似问题