Выполнить относительный путь исполняемого файла в скрипте bash - PullRequest
2 голосов
/ 28 марта 2012

Я гуглил для этого senario, но он наводнен результатами о том, как превратить относительный путь в абсолютный (что будет работать, но я чувствую, что есть более простой путь)

У меня есть следующееСценарий:

$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, но в сценарии не может определить путь.Я убедился, что рабочий каталог - это то, что я ожидаю (ig, dir1).Есть ли какая-то команда call или exec, которая мне нужна перед ней?Я пытался sh ../executable1, но, конечно, bash баффы на исполняемый файл.

Ответы [ 2 ]

4 голосов
/ 29 марта 2012

Я только что проверил это, оно основано на вашей информации и работает нормально.

$ 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 голос
/ 28 марта 2012

Возможно, из-за разрешений для .. или ../executable1

пользователь, выполняющий ./shellscript, должен иметь разрешения на выполнение .. И ../executable1А он?

...