Je suis ce tutoriel pour exécuter correctement Aptana Studio sur Ubuntu 14.04:
J'ai donc installé Oracle JRE et j'ai finalement créé ce fichier run.sh
devant exécuter Aptana:
!/bin/bash
export UBUNTU_MENUPROXY=0 /home/andrea/Programmi/Aptana_Studio_3/AptanaStudio3
Le problème est que lorsque j'essaie d'exécuter ce script avec mon shell, j'obtiens le message d'erreur suivant:
andrea@andrea-virtual-machine:~/Programmi/Aptana_Studio_3$ Sudo sh run.sh
run.sh: 1: run.sh: !/bin/bash: not found
run.sh: 3: export: /home/andrea/Programmi/Aptana_Studio_3/AptanaStudio3: bad variable name
Pourquoi? Qu'est-ce que je rate? Comment puis-je résoudre ce problème?
Il y a deux erreurs. En bref, voici le correctif que je suggérerais (les détails suivent):
#!/bin/sh
UBUNTU_MENUPROXY=0 /home/andrea/Programmi/Aptana_Studio_3/AptanaStudio3
Comme Shutupsquare dit , votre ligne de hachage ( détails techniques ) devrait commencer par un #!
plutôt que simplement !
.
Cela provoque le premier de vos deux messages d'erreur et empêchera votre script d'être exécuté en tant que ./run.sh
, mais ce n'est pas la raison pour laquelle votre script ne parvient pas à exécuter AptanaStudio3
(car la ligne hashbang n'est pas requise pour la syntaxe d'appel sh run.sh
.).
En passant, lorsque vous exécutez sh run.sh
, il exécute votre script avec sh
comme interprète. Mais avec la ligne de hachage #!/bin/bash
, exécuter ./run.sh
exécuterait votre script avec bash
comme interprète. Ce script ne dépend en aucune façon des fonctionnalités avancées de bash
, et bien que l'utilisation supplémentaire de la mémoire de bash
soit presque certainement insignifiante pour cette application, vous pouvez toujours écrire la ligne de hachage afin que ./run.sh
exécute le script avec sh
:
#!/bin/sh
export
Le principal problème, à l'origine de votre deuxième message d'erreur et à la raison pour laquelle AptanaStudio3
ne s'exécute pas, est que vous utilisez export
de manière incorrecte. La commande export
n'exécute pas de commande. Donc, votre commande est interprétée comme une variable d’environnement elle-même.
export
peut définir et exporter une variable d'environnement:
export NAME=value
export
peut également exporter une variable d'environnement (avec quelle que soit sa valeur actuelle):
export NAME
export
n'accepte pas cependant la syntaxe NAME=value command
ou NAME command
.
En supposant que votre objectif est d'exécuter la commande /home/andrea/Programmi/Aptana_Studio_3/AptanaStudio3
avec la variable UBUNTU_MENUPROXY
définie et définie sur 0
, , vous devez simplement supprimer le mot export
:
UBUNTU_MENUPROXY=0 /home/andrea/Programmi/Aptana_Studio_3/AptanaStudio3
C’est le moyen standard d’exécuter une commande avec un environnement modifié, à partir d’un shell.
export
a pour objet d’exporter des variables dans les environnements de tous les processus enfants lancés ultérieurement (c’est-à-dire chaque commande exécutée à partir de votre script). Donc, exécuter export UBUNTU_MENUPROXY=0
sur sa propre ligne suivi de la commande AptanaStudio3
, comme Shutupsquare le suggère , fonctionnera et aura le même effet, et constitue un moyen parfaitement et acceptable de le faire.
Je préfère la façon que j'ai suggérée ci-dessus ( sans export
) car:
export
peut être source de confusion pour les autres lecteurs de votre script (ou pour vous-même plus tard), ce qui est sans doute moins élégant.export
, vous avez besoin de deux commandes. en utilisant le chemin sans cela, vous n’avez besoin que d’un seul.env
fonctionne (en quelque sorte) comme vous essayiez d'utiliser export
Enfin, il existe une commande qui accepte la syntaxe NAME=value command
. Cette commande est env
. Il n'y a aucune raison de l'utiliser dans ce script de shell: sa fonction, dans cette utilisation de base, est de fournir (une partie de) le pouvoir d'un shell lors de l'exécution d'une commande avec un environnement modifié, et vous disposez déjà de ce pouvoir.
Cependant, dans certaines circonstances en dehors du script Shell, vous devrez peut-être définir une variable d'environnement pour une commande et exécuter cette commande (et effectuer ces opérations dans une seule commande). Dans les contextes où l'utilisation de la ligne VARIABLE=value command
n'est pas prise en charge, vous pouvez utiliser:
env VARIABLE=value command
Vous n'avez pas besoin de ça ici cependant. Tous les shells de type Bourne (par exemple, sh
, dash
, bash
, ksh
, zsh
) prennent en charge VARIABLE=value command
.
Devrait être #!/bin/bash
. Je pense aussi que vous devriez avoir une nouvelle ligne à la fin de export UBUNTU_MENUPROXY=0
.
#!/bin/bash
export UBUNTU_MENUPROXY=0
/home/andrea/Programmi/Aptana_Studio_3/AptanaStudio3