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

Я пытаюсь запустить следующую команду на 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 на всякий случай, и я также проверил его разрешения на выполнение, что, похоже, нормально.

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

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

4 ответа

можно запустить скрипт удара при помощи следующей команды

bash <location of the script file>

в случае

bash /home/abcdef/Desktop/jikesrvm/dist/production_x86_64-linux/rvm

, это будет работать

что в основном. средство является Вашим местоположением текущего каталога.

, если Вы находитесь под Вашим <user>, папка затем пытается делать это

./Desktop/jikesrvm/dist/production_x86_64-linux/rvm

, она будет работать, но сначала необходимо сделать исполняемый файл файла использованием следующей команды

chmod +x ~/Desktop/jikesrvm/dist/production_x86_64-linux/rvm
5
ответ дан 20 April 2015 в 13:41

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

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

Для использования команды без bash Вы могли войти

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

, или

Desktop/jikesrvm/dist/prototype_x86_64-linux/rvm

из Вашего корневого каталога, принимающего это, отмечен исполняемый файл.

1
ответ дан 20 April 2015 в 13:41

В то время как Вы пробуете:

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

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

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

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

Можно на самом деле просто работать, исполняемый файл при помощи полного пути (учитывая сценарий исполняемый файл):

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

Или как ~ expaneded оболочкой как $HOME:

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

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

Теперь, если Ваш сценарий Не является исполняемым файлом, можно выполнить его также, не делая его исполняемым файлом путем сообщения оболочки, которой программа обработает сценарий т.е. предоставление сценария как аргумент bash (оболочка):

bash /home/abcdef/Desktop/jikesrvm/dist/prototype_x86_64-linux/rvm
3
ответ дан 20 April 2015 в 13:41

В дополнение к другим ответам
то, Что Вы попробовали, было прекрасно почти... Но Вы забыли расширение .sh
- В Вашем случае
./home/abcdef/Desktop/jikesrvm/dist/production_x86_64-linux/rvm.sh
- или
cd /home/abcdef/Desktop/jikesrvm/dist/production_x86_64-linux
./rvm.sh

0
ответ дан 23 November 2019 в 06:29

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

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