找出Cocoa中可执行文件的位置

找出Cocoa中可执行文件的位置,第1张

概述简单的问题是:如何在 Cocoa应用程序中找出可执行文件的位置. 请记住,在许多类Unix *** 作系统中,人们使用PATH环境为其可执行文件分配首选位置,尤其是当他们的系统中有多个版本的相同应用程序时.作为一个好习惯,我们的Cocoa应用程序应该找到它需要的可执行文件的PREFERRED位置. 例如,/usr/bin中的Leopard默认配置中有一个SVN 1.4,你通过/ opt / local / 简单的问题是:如何在 Cocoa应用程序中找出可执行文件的位置.

请记住,在许多类Unix *** 作系统中,人们使用PATH环境为其可执行文件分配首选位置,尤其是当他们的系统中有多个版本的相同应用程序时.作为一个好习惯,我们的Cocoa应用程序应该找到它需要的可执行文件的PREFERRED位置.

例如,/usr/bin中的Leopard默认配置中有一个SVN 1.4,你通过/ opt / local / bin上的MacPorts安装了一个更新的版本,比如SVN 1.5.3.你可以使用/etc/path.d或.bash_profile或.zshrc设置你的PATH:

export PATH = / opt / local / bin:$PATH

因此,您可以使用新版本的svn而不是系统中的旧版本.它适用于任何终端环境.但不是在Cocoa应用程序中.据我所知,Cocoa应用程序只有一个默认的PATH环境,如下所示:

export PATH =“/usr/bin:/ bin:/usr/sbin:/ sbin”

默认情况下,它不会使用/etc/path.d,.bash_profile,.profile,.zshrc等中的配置.

那我们究竟怎么办?

附:我们有a semi-solution here,但它不能完全满足这个问题的目标.

解决方法 尝试执行此 *** 作的棘手部分是,用户可以将其shell设置为任何内容:sh,bash,csh,tcsh等,并且每个shell以不同方式设置其终端环境.我不确定自己是否会为此自行解决问题,但如果你真的想这样做,这就是我要采取的路线.

第一步是找出用户的shell.在OS X上,此信息存储在目录服务中,可以通过DirectoryService.framework中的API或使用dscl命令行工具进行加密. DirectoryService API是一个王室的痛苦,所以我可能会去Cli路线.在Cocoa中,您可以使用NSTask来执行带有参数的工具来获取用户的shell(我会在其他地方留下详细信息).该命令看起来像:

dscl -pList localhost -read / Local / Default / Users / username UserShell

这将返回您可以解释为pList并转换为NSDictionary的XML文本,或者您可以省略-pList选项并自行解析文本输出.

一旦知道了用户shell的路径,下一步就是执行该shell并告诉它运行env命令打印出用户的环境.看起来大多数shell都接受一个-c命令行选项,它允许你传入一个字符串来执行 – 我想你只需要假设它是用户选择的shell的通用接口.

一旦你拥有了用户的环境,你就可以从中获取它们的路径列表,然后搜索你正在寻找的任何可执行文件.就像我说的那样,我真的不知道这是否值得这么麻烦,但如果我实施这个,那就是我要去的方向.

总结

以上是内存溢出为你收集整理的找出Cocoa中可执行文件的位置全部内容,希望文章能够帮你解决找出Cocoa中可执行文件的位置所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1019459.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存