2010-06-27 9 views
10

Je le script suivantligne shebang ne fonctionne pas dans le script R

#!/usr/bin/Rscript 

print ("shebang works") 

dans un fichier appelé shebang.r. Lorsque je le lance de la ligne de commande en utilisant RSCRIPT cela fonctionne

$ Rscript shebang.r 

mais quand je le lance à partir de la ligne de commande seule

$ shebang.r 

Il ne fonctionne pas. La commande shebang.r n'a pas été trouvée.

Si je tape (basé sur d'autres exemples que j'ai vu)

$ ./shebang.r 

j'obtenir la permission refusée.

Oui, RSCRIPT est situé dans/usr/bin

Répondre

12

Rendre le fichier exécutable.

chmod 755 shebang.r 
+0

Ça a marché! Existe-t-il d'autres options que 755 qui fonctionnent? Je prévois d'affiner la commande sur mon ordinateur portable. Merci. – Milktrader

+0

@Milktrader: ce qui est nécessaire est que la personne essayant d'exécuter le fichier ait l'autorisation d'exécution dessus. Lisez la page de manuel pour 'chown' et la section de la page de manuel' ls' sur le "format long" (c'est-à-dire 'ls -l'). – dmckee

+0

Tout ce qui définit le bit exécutable pour le propriétaire devrait fonctionner, tant que vous êtes le propriétaire du fichier. Au minimum, vous avez besoin de '100', mais vous ne pourrez plus le lire ni l'écrire. Vous voulez probablement au moins '700', ce qui permet au propriétaire de lire, d'écrire et d'exécuter des permissions, mais refuse toutes les permissions à tout le monde (sauf root). – Thomas

2

En plus de la réponse de Sjoerd ... Seuls les répertoires listés dans la variable d'environnement PATH sont inspectées pour vérifier les commandes à exécuter. Vous devez taper ./shebang.r (par opposition à seulement shebang.r) si le répertoire en cours, connu sous le nom ., n'est pas dans votre PATH.

Pour inspectent PATH, le type

echo $PATH 

Pour ajouter .-PATH, le type

export PATH="$PATH:." 

Vous pouvez ajouter cette ligne à votre ~/.bashrc pour y arriver automatiquement si vous ouvrez un nouveau shell.

+0

oui, j'ai besoin d'utiliser ./shebang.r pour le faire fonctionner. On m'a dit que l'ajout. à la variable PATH introduit un risque de sécurité, mais je pourrais le faire de toute façon puisque c'est mon ordinateur personnel et ce n'est pas comme si j'avais des codes de lancement de missiles dessus. – Milktrader

+2

Le risque de sécurité est que vous pourriez être dans un répertoire où quelqu'un d'autre met, disons, un programme nommé 'ls' que vous pourriez accidentellement exécuter. Si '.' est le dernier dans votre' PATH', le risque est assez faible, parce que l'habituel '/ bin/ls 'aura préséance, et' .' ne sera recherché que dans le cas d'une commande inexistante. Cependant, je recommande de ne pas ajouter '.' au' PATH' de l'utilisateur root, car les dommages potentiels sont plus importants. Voir aussi https://listman.redhat.com/archives/redhat-list/1999-July/msg01969.html – Thomas

Questions connexes