【发布时间】:2020-10-13 23:24:09
【问题描述】:
当我在 Linux 环境中从命令行调用 R 时,我的 R 脚本中有以下行,
system('spectre run.scs -f psfascii +l mylog.txt >> /dev/null')
但是当我通过从命令行启动 RStudio 来运行此脚本时,同一行不起作用,
spectre 是一个有效的命令,在调用 R 时有效,但在 rstudio 时该命令未被识别。
注意事项:spectre 命令来自除 R 之外的外部模块,我在调用 R 和 rstudio 之前已将其加载到 linux 终端中,如下所示。
使用 R 和 RStudio 的 PATH 编辑
当我从命令行运行 which spectre 并检查其路径时,
> Sys.getenv("PATH")
[1] "/tool/eda/apps/synopsysHspice/2013.03-SP2/hspice/bin:/tool/eda/apps/synopsysHspice/2013.03-SP2/hspice/arch:/tool/eda/apps/mentorCalibre/2014.2_33.25/aoi_cal_2014.2_33.25/bin:/tool/eda/apps/cadenceMMSIM/13.11.292/tools/bin:/tool/eda/apps/cadenceMMSIM/13.11.292/bin:/tool/eda/apps/cadenceICOA/6.1.6.500.11/share/oa/bin:/tool/eda/apps/cadenceICOA/6.1.6.500.11/tools/dfII/bin:/tool/eda/apps/cadenceICOA/6.1.6.500.11/tools/bin:/tool/pandora64/bin:/tool/pandora64/sbin:/tool/pandora/bin:/tool/pandora/sbin:/usr/lib64/qt-3.3/bin:/bin:/usr/bin:/opt/puppetlabs/bin"
但是当我在 R studio 中检查路径时,
> Sys.getenv("PATH")
[1] "/tool/pandora64/.package/qt-5.5.1/bin:/tool/pandora64/.package/R-3.4.3/bin:/tool/pandora64/.package/rstudio-99.9.9/app/bin:/bin:/usr/bin:/tool/eda/apps/cadenceMMSIM/13.11.292:/tool/eda/apps/cadenceMMSIM/13.11.292"
【问题讨论】:
-
在 shell 命令行(R 和 RStudio 都不是)上,输入
which spectre。无论它为您提供什么路径,请在 RStudio 中使用该完整路径。您可以通过分析 R 和 RStudio repl 循环中的Sys.getenv("PATH")来了解它们的不同之处,以了解后者可能在较小(或至少不同)列表上运行。 -
@r2evans 是的,我可以看到 R 和 Rstudio 中的 PATH 是不同的。我附上了我在 Q 中看到的不同路径。你能建议如何在 Rstudio 中更改路径吗?
-
Sys.setenv(PATH="....new_path..."),或者更简单地使用完整的系统,如system('/path/to/spectre .....')。 -
是的,它有效,非常感谢!!