我如何运行位于不同目录中的命令,以便该命令认为我已经在当前目录中运行了它?
如果命令使用basename()
或argv[0]
(或任何它的名称)来获取其调用位置,并且它需要其目录中的文件,则它可能会在调用该应用程序的目录中查找;即错误的目录。
当然,您可以cd
先进入目录并在那里调用它,但有没有办法调用该应用程序,让它认为您已经从其目录运行它(无需cd
先运行)?
如果可能的话,我会在 中使用它crontab
,因为想到cd
在那里使用就让我害怕。
答案1
为什么cd
在 crontab 中使用会让你害怕?
请注意,如果您只是暂时更改目录然后返回,则可以pushd
使用popd
答案2
您可以制作如下脚本:
#!/bin/sh
cd /dir/
yourcommand
然后将其保存在某个地方并将该脚本添加到 crontab