正确设置工作路径

时间:2010-08-22 16:47:21

标签: java unix process processbuilder

ProcessBuilder pb = new ProcessBuilder("pwd");
pb.directory(new File("/server1/work/uz/rt/adapt/0/"));
Process s = pb.start();

我希望输出为/server1/work/uz/rt/adapt/0/,而不是:

/work/uz/rt/adapt/0/

/work/uz/rt/adapt/0//server1/work/uz/rt/adapt/0/是等效的(安装在同一个地方,/ work / ..是正确的路径,/ server1 / work / ..是挂载的),但我需要工作在/server1/work/uz/rt/adapt/0/下,因为其他一些服务器只能通过该路径。

如何使/server1/work/uz/rt/adapt/0/成为当前路径?

其他词语

为什么公共ProcessBuilder目录(文件目录) 将目录转换为规范文件。我怎样才能使用绝对文件路径??

我也试过黑客解决'

        pb.directory(new File("/asr1/work/oguz/rt/adaptMLLR2/0/"){
             public File getCanonicalFile(){
                 return this.getAbsoluteFile();
             }
             public String getCanonicalPath() {
                 return this.getAbsolutePath();
             }

        });

也不起作用。

我通过将cd / server1 / .. line添加到bash脚本中解决了我的问题..并删除了pd.directory(..)行。但是这个问题(为什么我不能使用绝对路径的pd.directory(..))还没有回答...... ???

1 个答案:

答案 0 :(得分:0)

使用shell的cd实用程序似乎是一个合适的解决方案。另一种方法是将PWD环境变量设置为带符号链接的路径名,但这很难看,除非你ProcessBuilder自动为你做这件事。

请注意,如果shell不是当前目录的绝对路径名,则会忽略PWD,而是向系统询问没有符号链接的绝对路径名。