15.4 Execute Shell scripts
You can run Shell scripts via the bash
or sh
or zsh
engine, depending on which shell you prefer. Below is a bash
example, with the chunk header ```{bash}
:
ls *.Rmd | head -n 5
## 00-authors.Rmd
## 01-installation.Rmd
## 02-overview.Rmd
## 03-basics.Rmd
## 04-content.Rmd
Please note that bash
is invoked with the R function system2()
. It will ignore profile files like ~/.bash_profile
and ~/.bash_login
, in which you may have defined command aliases or modified environment variables like the PATH
variable. If you want these profile files to be executed just like when you use the terminal, you may pass the argument -l
to bash
via engine.opts
, e.g.,
```{bash, engine.opts='-l'}
echo $PATH
```
If you want to enable the -l
argument globally for all bash
chunks, you may set it in the global chunk option in the beginning of your document:
knitr::opts_chunk$set(engine.opts = list(bash = "-l"))
You can also pass other arguments to bash
by providing them as a character vector to the chunk option engine.opts
.