Я пытаюсь запустить следующую команду на 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
на всякий случай, и я также проверил его разрешения на выполнение, что, похоже, нормально.
Что мне здесь не хватает?
можно запустить скрипт удара при помощи следующей команды
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
Когда Вы будете использовать ./
для выполнения файла, это посмотрит в текущей папке (.
) для папки, названной home
вместо того, чтобы начать с корневого каталога (/
).
Используя эти bash
команда явно как в ответе Больцано начинает с корневого каталога вместо того, в котором Вы находитесь.
Для использования команды без bash
Вы могли войти
/home/abcdef/Desktop/jikesrvm/dist/prototype_x86_64-linux/rvm
, или
Desktop/jikesrvm/dist/prototype_x86_64-linux/rvm
из Вашего корневого каталога, принимающего это, отмечен исполняемый файл.
В то время как Вы пробуете:
./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
В дополнение к другим ответам
то, Что Вы попробовали, было прекрасно почти... Но Вы забыли расширение .sh
- В Вашем случае
./home/abcdef/Desktop/jikesrvm/dist/production_x86_64-linux/rvm.sh
- или
cd /home/abcdef/Desktop/jikesrvm/dist/production_x86_64-linux
./rvm.sh