R:使用system()调用的别名命令

dar*_*ber 7 bash r .bash-profile

在我的~/.bash_profile文件中,我把这个alias命令:

which mvsync
alias mvsync='rsync --remove-source-files -arvuP'
    /usr/bin/rsync
Run Code Online (Sandbox Code Playgroud)

它可以从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
Run Code Online (Sandbox Code Playgroud)

R/system()可以正确识别bash_profile中的其他环境变量.知道如何/如果它可以修复?

这是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   
Run Code Online (Sandbox Code Playgroud)

tea*_*bob 4

您的 shell 可能不是登录 shell:http://linux.die.net/man/1/bash

当 bash 作为交互式登录 shell 或带有 --login 选项的非交互式 shell 被调用时,它首先从文件 /etc/profile 中读取并执行命令(如果该文件存在)。读取该文件后,它会按顺序查找 ~/.bash_profile、~/.bash_login 和 ~/.profile,并从第一个存在且可读的文件中读取并执行命令。启动 shell 时可以使用 --noprofile 选项来禁止此行为。

--login 可能有效,但最好将您的别名放入 .bashrc 中,即使它不是登录 shell,该别名也会被执行