Mac OS X应用程序中的Bash脚本,从系统调用自定义应用程序

时间:2015-12-17 11:35:18

标签: objective-c macos bash cocoa terminal

在我的bash脚本中,我有:

program=*program_name*
condition=$(which $program 2>/dev/null | grep -v "not found" | wc -l)
if [ $condition -eq 0 ] ; then
echo "$program is not installed";
echo -n *mypass* |sudo -S gem install $program;
fi

首先,它每次都安装程序。它显示程序未安装,但我可以从终端使用它。

...然后,我需要在我的可可应用程序中使用这个程序,例如

program --help

使用

system([pathToFile UTF8String]);

我得到:

path_to_bundle/myBashScript.sh: Permission denied // Where path is in bundle

path_to_folder/myBashScript.sh:line 30: program: command not found // Where path is from other system folder

使用NSTask我每次都会获得program: command not found

我不明白为什么会这样。我想知道如何在我的可可应用程序中使用这个程序。

1 个答案:

答案 0 :(得分:1)

所以,我找到了解决方案 当您尝试从cocoa应用程序运行自定义系统程序时,您应该提供二进制文件的完整路径。

问题在于:

program=*program_name* 

*program_name*应该是二进制文件的完整路径,在我的例子中它是/Library/Ruby/Gems/2.0.0/gems/program-version/bin/program

有关安装路径的其他信息: https://wiki.haskell.org/Mac_OS_X_Common_Installation_Paths http://help.rubygems.org/discussions/problems/739-how-to-run-applications-installed-by-gem