从从Java运行的OSX脚本中找不到wget
我编写了一个Java程序,在Mac上运行脚本:从从Java运行的OSX脚本中找不到wget,java,sh,wget,Java,Sh,Wget,我编写了一个Java程序,在Mac上运行脚本: Runtime rt = Runtime.getRuntime(); String cmdString = "./load_test.sh"; System.out.println(cmdString); Process pr = rt.exec(cmdString); BufferedReader input = new BufferedReader(new InputStreamReader
Runtime rt = Runtime.getRuntime();
String cmdString = "./load_test.sh";
System.out.println(cmdString);
Process pr = rt.exec(cmdString);
BufferedReader input = new BufferedReader(new InputStreamReader(
pr.getErrorStream()));
String line = null;
while ((line = input.readLine()) != null)
{
System.out.println(line);
}
int exitVal = pr.waitFor();
load_测试脚本执行以下操作:
wget -O/dev/null --load-cookies cookies-$1.txt 'http://demo.mycompany.co.uk/userhome'
尽管我在Mac上从许多不同的位置运行了load_test.sh,但该Java程序的输出是:
./pcm\u load\u test.sh:未找到第2行:wget:命令
所以,当从Java派生时,wget似乎不能从脚本调用
我认为这可能是用户访问问题,因此我尝试:
sudo chmod a+rwx /usr/local/bin/wget
但这没有效果
您知道为什么wget
不会从Java程序调用的脚本运行吗?如所述,并根据我自己通过应用程序在多个操作系统上运行脚本的经验:
当通过java代码执行脚本时,必须确保可以找到要执行的命令。这通常需要使用以下两个选项之一:
- 使用全局环境路径变量-以编程方式运行脚本时,代码将打开一个shell实例并执行脚本。新的shell实例没有预配置的全局环境路径变量,这意味着您应该将此配置添加到脚本的开头:
export PATH=${PATH}:/PATH/to/your/used/bin
- 使用命令的绝对路径-只需使用脚本中的完整路径显式调用命令:
/usr/local/bin/wget……。
wget
命令。尝试通过chmod
提供完整的读/写/执行权限实际上没有任何效果,因为这些权限无助于提供命令的路径
参考资料: