使用Linux shell,如何启动与当前工作目录不同的工作目录的程序?

例如,我有一个二进制文件helloworld,它在当前目录中创建了文件hello-world.txt。 这个文件在目录/a中。

目前,我在目录/b。我想启动我的程序运行..然后在第三个目录/c中获取hello-world.txt。


当前回答

如果您总是希望它到/C,那么在写入文件时使用绝对路径。

其他回答

如果您总是希望它到/C,那么在写入文件时使用绝对路径。

如果你想在你的程序中执行这个,那么我会这样做:

#include <unistd.h>
int main()
{
  if(chdir("/c") < 0 )  
  {
     printf("Failed\n");
     return -1 ;
  }

  // rest of your program...

}
sh -c 'cd /c && ../a/helloworld'

一种方法是创建包装器外壳脚本。

shell脚本将当前目录更改为/c,然后运行/a/helloworld。shell脚本退出后,当前目录将恢复到/b。

下面是一个bash shell脚本示例:

#!/bin/bash
cd /c
/a/helloworld

为什么不简单点呢

cd SOME_PATH &&运行some_command && cd -

最后一个“cd”命令将带您回到最后一个PWD目录。这应该适用于所有*nix系统。