源无法在shell脚本中工作

时间:2018-06-05 14:53:28

标签: linux bash unix anaconda

我们在Linux服务器上运行,我需要在anaconda中运行R脚本。

如何通过shell脚本使用anaconda环境。

通过命令行:

$  source anaconda 
$  Rscript <file.R>

工作正常。

如果anaconda已经使用以下.sh工作正常:

#!/bin/bash
PATH=$PATH:/usr/local/bin/anaconda
echo Rscript ./name.R

是否有以下版本:

#!/bin/bash
PATH=$PATH:/usr/local/bin
echo source anaconda; Rscript ./name.R

那会打开anconda并运行脚本吗?

我的蟒蛇位于./anaconda内。 我已经尝试将其设置为我的初始路径。

谢谢!

1 个答案:

答案 0 :(得分:0)

我们缺少的是anaconda文件的内容。我认为它会将Rscript命令创建为别名,因为默认情况下,shell不会扩展别名,除非shell是交互式的。例如:

互动,一切都很好

$ cat > anaconda
alias Rscript='echo this is Rscript:'
$ source ./anaconda
$ Rscript foo bar
this is Rscript: foo bar

但在脚本中,我可以重现您的错误

$ cat > test.sh
#!/bin/bash
source ./anaconda
Rscript foo bar
$ bash test.sh
test.sh: line 3: Rscript: command not found

强制bash互动:

$ bash -i test.sh
this is Rscript: foo bar

试试这个:

#!/bin/bash
shopt -s expand_aliases
source /path/to/anaconda
Rscript ./name.R