2017-04-24 6 views
3

これは重複する可能性が高いと認識していますが、他の質問はここにありません。私の問題に対する答えが見つかりました。以下は私がすでに試したことの要約です。Rスクリプトを実行可能にするには?

私はRスクリプトファイルfile.rあります

:発行して(私はそれが1ヶ月前だった使用された最後の時間を)

#!/usr/bin/env Rscript 
print("Hello World!") 

実行可能である(chmod +x file.r)、そしてうまく実行するために使用され

$./file.r 

しかし、今日:実際には

$./file.r 
/usr/bin/env: 'Rscript\r': No such file or directory 

which Rscript 
/usr/bin/Rscript 

は、このように私はにシェバングを変更:#!/usr/bin Rscript、しかし:

./file.r 
/usr/bin: bad interpreter: Permission denied 

は、それから私は、私は、スーパーユーザーとして実行するだろうと思ったが、:

周り読む
sudo ./file.r 
sudo: unable to execute ./file.r: Permission denied 

私がことがわかりましたRの新規インストールは私の問題を解決するので、Rをアンインストールしてインストールしました。残念ながら、前に書いたことがまだ適用されています。ただし、以下の両方がシバンバージョンで動作します:

Rscript file.r 
[1] "Hello World!" 

私は間違っていますか?

+0

'#!/ usr/bin Rscript'は間違いありません。私は '#!/ usr/bin/Rscript'のようなものを実行しようとしていたと思います。それがRscriptがあなたのために保存されている場所なら、それはうまくいくでしょう。元のエラーの「\ r」部分が問題の原因となっているようです。シバンライン全体を削除して再入力しようとしましたか? – Dason

答えて

1

ああ、キャリッジリターン(\ r)問題は、viエディタを使用している場合、最初の行に追加されます。:set listが表示されます。行末は$として、キャリッジリターン文字は^ Mとして表示されます。

#!/usr/bin/env Rscript Makes your script portable than #!/usr/bin/Rscript 

ところで、あなたは、INSERT INTO(I)/追加(A)モードとタイプCtrl + Vとを行くことによってViには、\ rは挿入することができますし、Ctrl +あなたが直接指すようにしたい場合はメートル

+0

そうだった、ありがとう。 emacsユーザの将来の参考として、 'M-x revert-buffer-with-coding-system'を実行し、' utf-8-unix'を選択して行末を表示することができます。 – ZzKr

0

実行可能な、あなたはシェバング(スペースなし)の後に完全なパスが必要になります。

#!/usr/bin/Rscript 

ラヴィこの修正プログラムが動作しないならば、解決策はただ伴う改行を削除し、それを置くことも指摘したように、再び。

コードを実行するには別のプログラム(つまりenv)を呼び出すことが実際にはわかっていないので、コードをもっと紛らわしくしてしまうため、移植性を高めるためにenv回避策のファンではありません。変更されたシェル。その詳細情報はhereです。

関連する問題