J'essaie d'exécuter la commande suivante sur bash:
./home/abcdef/Desktop/jikesrvm/dist/prototype_x86_64-linux/rvm
qui me donne un
bash: ./home/abcdef/Desktop/jikesrvm/dist/production_x86_64-linux/rvm: No such file or directory
rvm
est un fichier bash et il s'exécute correctement lorsque je tente de l'exécuter à partir de son propre dossier (production_x86_64-linux
). Cela fonctionne aussi très bien si j'essaie de l'exécuter lors de l'ouverture du terminal dans son dossier parent, par exemple, ou même dans son dossier parent-parent.
Je l'ai déjà utilisé avec dos2unix
juste au cas où et j'ai également vérifié ses autorisations d'exécution, ce qui semble bien se passer.
Qu'est-ce que j'oublie ici?
vous pouvez exécuter un script bash en utilisant la commande suivante
bash <location of the script file>
dans ton cas
bash /home/abcdef/Desktop/jikesrvm/dist/production_x86_64-linux/rvm
ça va marcher
ce que fondamentalement le. signifie est votre emplacement de répertoire actuel.
si vous êtes dans votre dossier <user>
essayez de le faire
./Desktop/jikesrvm/dist/production_x86_64-linux/rvm
cela fonctionnera mais vous devez d’abord rendre le fichier exécutable en utilisant la commande suivante
chmod +x ~/Desktop/jikesrvm/dist/production_x86_64-linux/rvm
Pendant que vous essayez:
./home/abcdef/Desktop/jikesrvm/dist/prototype_x86_64-linux/rvm
Shell traitera toujours .
devant un chemin en tant que répertoire actuel et le chemin sera donc toujours un chemin relatif. Donc, Shell essaie de trouver un fichier exécutable à l’emplacement:
$PWD/home/abcdef/Desktop/jikesrvm/dist/prototype_x86_64-linux/rvm
ce qui est faux comme vous pouvez le voir. Vous exécuteriez un script exécutable correspondant au répertoire actuel sous le nom ./script.sh
.
En fait, vous pouvez simplement exécuter le fichier exécutable en utilisant le chemin absolu (étant donné que le script est exécutable):
/home/abcdef/Desktop/jikesrvm/dist/prototype_x86_64-linux/rvm
Ou si ~
est développé par Shell comme $HOME
:
~/Desktop/jikesrvm/dist/prototype_x86_64-linux/rvm
Ou même simplement le nom du script si le répertoire contenant le script est dans la variable d'environnement PATH
name__.
Maintenant, si votre script est Non exécutable, vous pouvez aussi l'exécuter sans en faire un exécutable en indiquant au Shell quel programme gérera le script, c'est-à-dire en lui donnant comme argument bash
(Shell):
bash /home/abcdef/Desktop/jikesrvm/dist/prototype_x86_64-linux/rvm
Lorsque vous utilisez ./
pour exécuter un fichier, le dossier en cours (.
) est recherché dans un dossier nommé home
au lieu de partir du répertoire racine (/
).
Utiliser explicitement la commande bash
comme dans la réponse de bolzano commence à partir du répertoire racine au lieu de celui dans lequel vous vous trouvez.
Pour utiliser la commande sans bash
, vous pouvez entrer
/home/abcdef/Desktop/jikesrvm/dist/prototype_x86_64-linux/rvm
ou
Desktop/jikesrvm/dist/prototype_x86_64-linux/rvm
depuis votre répertoire personnel en supposant qu’il soit marqué comme exécutable.