我用谷歌搜索了这个参议员,但它充满了关于如何将相对路径转变为绝对路径的结果(这会起作用,但我觉得有一种更简单的方法)
我有以下情况:
$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)。我需要一些call
或exec
之类的命令吗?我尝试了sh ../executable1
,但当然还是对可执行文件进行了抨击。
答案 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
的执行权限。他呢?