Je veux exécuter unity3d sur mon bash afin de mettre des entrées alias et .desktop. Cependant, cela s'avère plus difficile.
L'erreur de titre apparaît. J'essaie la commande:
bash path/to/program
Rechercher sur le site semble être un problème de compatibilité. Ainsi, lorsque j'essaie la commande de fichier, le résultat est le suivant:
program: ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.24, BuildID[sha1]=8020f3d60eff5b41c53e6b60a9e2d43802e28f93, not stripped
alors que mon système est x86_64.
Cependant quand je vais directement dans le dossier et lance le programme en tant que
./program
le programme fonctionne normalement.
Je ne vois pas en quoi cela peut être un problème de compatibilité avec mon système lorsque je peux exécuter le programme avec ./program mais pas avec le programme bash
En guise de remarque, j'utilise zsh et je ne suis pas sûr que cela gêne de quelque manière que ce soit.
Lorsque vous faites bash some/file
, bash lit ce fichier, en analyse le contenu conformément aux règles de syntaxe de bash et exécute les commandes résultantes. Les fichiers valides sont généralement appelés "scripts" et leur contenu ressemble beaucoup à ce que vous tapez réellement dans un shell. Les programmes compilés contiennent des instructions machine. Vous utilisez zsh - vous attendez-vous à ce qu'il comprenne les instructions de la machine? Zsh ne le fait pas et bash non plus.
Si vous souhaitez utiliser bash pour exécuter une commande, utilisez l'option -c
:
bash -c '/some/command'
Mais il n’ya pas grand intérêt à le faire lorsque la commande elle-même est exécutable. Si vous pouvez l'exécuter avec /some/command
, utilisez-le directement.
A l'invite de commande dans bash, zsh ou un autre shell, vous pouvez écrire /path/to/program
ou cd /path/to; ./program
les deux doivent donner le même résultat .. que le programme est exécuté.
Le fichier vous indique qu'il s'agit d'un programme exécutable binaire. Par opposition à un script dans certaines langues, il doit être interprété par un programme shell ou autre.