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