【发布时间】:2015-07-30 02:54:30
【问题描述】:
在我的~/.bash_profile 文件中,我输入了这个alias 命令:
which mvsync
alias mvsync='rsync --remove-source-files -arvuP'
/usr/bin/rsync
它在 bash shell 中运行良好,但是当我在 R 中使用 system 调用它时,我得到一个找不到命令:
R
system('mvsync --help')
sh: mvsync: command not found
## Or
system('mvsync --help', intern=TRUE)
sh: mvsync: command not found
Error in system("mvsync --help", intern = TRUE) :
error in running command
## Or
system("bash -i -c mvsync")
bash: mvsync: command not found
[4]+ Stopped R
bash_profile 中的其他环境变量可以被 R/system() 正确识别。 知道如何/是否可以修复吗?
这是 R 会话信息:
sessionInfo()
R version 3.1.3 (2015-03-09)
Platform: x86_64-redhat-linux-gnu (64-bit)
Running under: CentOS release 6.6 (Final)
locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8 LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 LC_PAPER=en_US.UTF-8 LC_NAME=C LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] graphics grDevices utils datasets stats methods base
other attached packages:
[1] ggplot2_1.0.0 data.table_1.9.4
loaded via a namespace (and not attached):
[1] chron_2.3-45 colorspace_1.2-4 digest_0.6.8 grid_3.1.3 gtable_0.1.2 MASS_7.3-39 munsell_0.4.2 plyr_1.8.1 proto_0.3-10 Rcpp_0.11.3 reshape2_1.4 scales_0.2.4 stringr_0.6.2
【问题讨论】:
-
你试过加
system('mvsync --help', intern=TRUE) -
@pacomet 恐怕不走运(见编辑后的帖子),但谢谢。
-
别名是 bash 主义,而不是 shell 主义(我知道这听起来很矛盾)。试试
system("bash -i -c mvsync")(-i对于让 bash 访问别名等功能很重要)。 -
@r2evans 谢谢,但仍然无法正常工作(请参阅编辑后的帖子)。顺便说一句,我看到
/bin/sh是 bash 的符号链接。 -
@dariober,好吧,我的意思是在系统调用中使用 bash 与交互式使用 bash 不同,因此需要
-i。不过很好奇,因为我发布的内容适用于我的 ubuntu 和 windows 机器。尝试-l(登录)以及(参见similar question),假设这是您定义别名的where的问题。
标签: r bash .bash-profile