在bash脚本中执行可执行的相对路径

时间:2012-03-28 19:23:46

标签: bash shell relative-path

我用谷歌搜索了这个参议员,但它充满了关于如何将相对路径转变为绝对路径的结果(这会起作用,但我觉得有一种更简单的方法)

我有以下情况:

$ls ../
executable1 dir1
$
$ls
shellscript1
$
$cat ./shellscript1
#!/bin/bash
#Run executable1, which I know is one dir up towards root
../executable1 arg1 arg2 arg3 etc
exit 0
#----End Of Script----
$
$./shellscript1
./shellscript1: line 3: ../executable1: No such file or directory

基本上我需要使用bash脚本的相对路径调用可执行文件。它在bash shell中工作正常,但在脚本中无法解析路径。我已经验证了工作目录是我期望的(例如,dir1)。我需要一些callexec之类的命令吗?我尝试了sh ../executable1,但当然还是对可执行文件进行了抨击。

2 个答案:

答案 0 :(得分:4)

我刚刚对此进行了测试,它基于您的信息,似乎工作正常。

$ ls ../
dir1  executable1  executable1.c
$
$ cat ../executable1.c
#include <stdio.h>
int main(int argc, char ** argv) {
        while (*argv) {printf ("<%s> ",*argv++);}
        printf("\n");
        return 0;
}
$ cat ./shellscript1
$
#!/bin/bash
#Run executable1, which I know is up dir up towards root
../executable1 arg1 arg2 arg3 etc
exit 0
#----End Of Script----
$
$ ./shellscript1
<../executable1> <arg1> <arg2> <arg3> <etc>
$
$ ls -l ../ ./
./:
total 4
-rwxr-xr-x 1 pizza pizza 133 2012-03-29 00:19 shellscript1

../:
total 16
drwxr-xr-x 2 pizza pizza 4096 2012-03-29 00:24 dir1
-rwxr-xr-x 1 pizza pizza 6501 2012-03-29 00:20 executable1
-rw-r--r-- 1 pizza pizza  126 2012-03-29 00:20 executable1.c

答案 1 :(得分:1)

可能是由..../executable1

上的权限引起的

执行./shellscript的用户应具有..../executable1的执行权限。他呢?