Проблема при попытке запустить сценарий оболочки: нет такого файла или каталога

Я пытаюсь запустить следующую команду в bash:

./home/abcdef/Desktop/jikesrvm/dist/prototype_x86_64-linux/rvm

, которая дает мне

bash: ./home/abcdef/Desktop/jikesrvm/dist/production_x86_64-linux/rvm: No such file or directory

rvm файл bash, и он работает нормально, когда я пытаюсь запустить его из своей собственной папки (production_x86_64-linux). Он работает также отлично, если я пытаюсь запустить его при открытии терминала в его родительской папке, например, или даже в родительской папке.

Я запустил ее с dos2unix на всякий случай и я также проверил его разрешения на выполнение, которые кажутся прекрасными.

Что мне здесь не хватает?

1
задан 20 April 2015 в 03:41

2 ответа

Пока вы пытаетесь:

./home/abcdef/Desktop/jikesrvm/dist/prototype_x86_64-linux/rvm

shell всегда будет рассматривать . перед контуром как текущий каталог и, следовательно, путь всегда будет относительным путем. Таким образом, оболочка пытается найти исполняемый файл в местоположении:

$PWD/home/abcdef/Desktop/jikesrvm/dist/prototype_x86_64-linux/rvm

, который является неправильным, как вы можете видеть. Вы выполняете исполняемый скрипт, который является текущим каталогом как ./script.sh.

Фактически вы можете просто запустить исполняемый файл, используя абсолютный путь (если скрипт выполним):

/home/abcdef/Desktop/jikesrvm/dist/prototype_x86_64-linux/rvm

Или как ~ расширена оболочкой как $HOME:

~/Desktop/jikesrvm/dist/prototype_x86_64-linux/rvm

Или даже просто имя скрипта, если каталог, содержащий скрипт, находится в переменной среды PATH.

Теперь, если ваш скрипт не является исполняемым, вы можете запустить его, не делая его исполняемым, сообщая оболочке, какая программа будет обрабатывать скрипт, то есть дать скрипту аргумент bash (shell):

bash /home/abcdef/Desktop/jikesrvm/dist/prototype_x86_64-linux/rvm
2
ответ дан 23 May 2018 в 21:13

Когда вы используете ./ для выполнения файла, он будет искать в текущей папке (.) для папки с именем home вместо начала из корневого каталога [/).

Использование команды bash, явно как в ответе bolzano, начинается с корневого каталога, а не из того, в котором вы находитесь.

Чтобы использовать команду без bash, вы можете ввести

/home/abcdef/Desktop/jikesrvm/dist/prototype_x86_64-linux/rvm

или

Desktop/jikesrvm/dist/prototype_x86_64-linux/rvm

из вашего домашнего каталога при условии, что он отмечен как исполняемый файл.

1
ответ дан 23 May 2018 в 21:13

Другие вопросы по тегам:

Похожие вопросы: