devtools包中的bash有什么作用?

时间:2011-10-13 15:31:28

标签: bash r devtools

在回答上一个问题时,Alternatives to system() in R for calling sed, rsync, ssh etc.: Do functions exist, should I write my own, or am I missing the point?hadley's answer表示在遇到类似问题时,他使用了以下功能:

bash <- function() system("bash")

我在他的devtools包中找到了原件; implemented in devtools/R/bash.R

#' Open bash shell in package directory.
#'
#' @param pkg package description, can be path or package name.  See
#'   \code{\link{as.package}} for more information
#' @export
bash <- function(pkg = NULL) {
  pkg <- as.package(pkg)

  in_dir(pkg$path, system("bash"))
}

<击> 我不明白这一点。当我发出

bash <- function() system("bash")

它将我发送到bash shell,之后exit将我返回到R会话,但没有bash函数。似乎我可以通过发出以下命令对之一来获得相同的效果(R中的第一个命令,bash中的第二个命令)

system('bash')
exit

q('yes')
R

<击> 被攻击的部分是由于我的复制/粘贴错误

我也无法在devtools包中找到bash函数的任何进一步用途

有人可以帮我理解如何使用bash功能;是否可以在交互式R模式之外的上下文中使用(例如在脚本或函数内)?

2 个答案:

答案 0 :(得分:7)

早期版本的devtools包含了一些将代码推送/拉到git / github的功能。这已被弃用。

相反,便捷函数bash只是在包目录中打开一个bash编辑器。这意味着您可以使用命令行工具与git / github进行交互。

bash的目的只是保存一些按键以打开包目录中的命令行。它没有任何其他功能。

答案 1 :(得分:4)

然后你要么没有输入

bash <- function() system("bash")

就像这样,在一条线上。这就是我得到的:

> bash <- function() system("bash")
> bash()
[gavin@prometheus cocorresp_check]$ exit
> ls()
 [1] "a"       "b"       "bash"    "cars.lo" "dat"     "Dbig"    "Djackal"
 [8] "foo"     "i"       "jack.t"  "jackal"  "mat"     "mat2"    "meanDif"
[15] "mod"     "N"       "perm"    "x"       "Xa"      "Xab"     "Xb"     
[22] "xct"     "y"
> match.fun("bash")
function() system("bash")

请注意,bash()是列出的第三个对象。所以第一行定义了函数,我在第二行使用它来删除bash shell,我立即退出,返回R提示符。

如果在您的工作环境中未定义该功能,那么无论您做什么来定义它都不起作用。根据您的描述,R刚刚执行system("bash")