ubuntuusers.de

R-script per Shebang und /usr/bin/env aufrufbar machen

Status: Gelöst | Ubuntu-Version: Kubuntu 14.04 (Trusty Tahr)
Antworten |

MoonKid

Anmeldungsdatum:
9. Februar 2012

Beiträge: 1379

Ein R-Script ruft man so auf

1
R -f script.R

Den Shebang (erste Zeile) des Scripts könnte ich dann so gestalten.

1
#!/usr/bin/R -f

Das funktioniert.

Möchte es aber lieber (noch besser) so haben

1
#!/usr/bin/env R -f

Das funktioniert natürlich nicht. Gibt es eine Möglichkeit einen Interpreter über /usr/bin/env aufzurufen und Optionen mit zu übergeben?

MoonKid

(Themenstarter)

Anmeldungsdatum:
9. Februar 2012

Beiträge: 1379

Keine Idee? 😉

noisefloor Team-Icon

Anmeldungsdatum:
6. Juni 2006

Beiträge: 29567

Hallo,

eine kurze Recherche mit dem Suchbegriff /ur/bin/env with arguments sagt: geht nicht.

Gruß, noisefloor

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11248

Wohnort: München

Wenn es nur darum geht das -f loszuwerden, kann man im Shebang statt 'R' auch 'Rscript' oder r aus littler aufrufen, da braucht es keinen extra Schalter, um eine Datei zu übergeben.

Ansonsten kennt R soweit ich weiß auch noch --no-environ und --vanilla, wenn man nicht will, dass das eigene Environment die Ausführung beeinflusst.
noisefloor schrieb:

eine kurze Recherche mit dem Suchbegriff /ur/bin/env with arguments sagt: geht nicht.

Das ist wohl von der Implementation abhängig - unter BSD und OS X sollte es klappen: http://www.in-ulm.de/~mascheck/various/shebang/#splitting

ChickenLipsRfun2eat Team-Icon

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12067

Alternativ könntest du es noch mit einem Alias versuchen, wenn es nur für den Nutzer sein soll (oder per rc.local). Wäre aber nur ein workaround oder ShellScript als Zwischenstation.

noisefloor Team-Icon

Anmeldungsdatum:
6. Juni 2006

Beiträge: 29567

Hallo,

Das ist wohl von der Implementation abhängig

Das ist korrekt - meine obige Aussage ist da etwas ungenau... Es geht wohl nicht mit der Bash unter Linux. Jedenfalls habe ich bei SO keine Lösung dazu gefunden - aber diverse Work-Arounds ☺

Gruß, noisefloor

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13174

noisefloor schrieb:

Das ist wohl von der Implementation abhängig

Das ist korrekt - meine obige Aussage ist da etwas ungenau... Es geht wohl nicht mit der Bash unter Linux. Jedenfalls habe ich bei SO keine Lösung dazu gefunden - aber diverse Work-Arounds ☺

Das ist eine generelle Art und Weise, wie bash die Shebang-Zeile behandelt, siehe hier. Ich gehe davon aus, dass andere Shells das genau so machen, habe aber bei POSIX nicht lange genug graben können, um eine definitive Antwort zu finden.

HmpfCBR Team-Icon

Avatar von HmpfCBR

Anmeldungsdatum:
22. Mai 2007

Beiträge: 4597

Wohnort: Kiel

seahawk1986 schrieb:

Wenn es nur darum geht das -f loszuwerden, kann man im Shebang statt 'R' auch 'Rscript' oder r aus littler aufrufen, da braucht es keinen extra Schalter, um eine Datei zu übergeben.

+1. Generell R Skripte eher nicht mit R -f oder R CMD BATCH aufrufen, sondern Rscript oder r nutzen. Ein paar Ausführungen zum zum wieso und den Unterschieden gibt es zum Beispiel auf stackoverflow.

Antworten |