quarto-dev / quarto-dev/quarto-cli

quarto has different `.Rprofile` behavior in Single File mode depending if `--output-dir` is used

Open
#14,872 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

engines-knitr enhancement
Dominant language
JavaScript
Stars
6k
Forks
458
Avg merge
1d 9h
Merged PRs (30d)
41

Description

I have:
  • searched the issue tracker for similar issues
  • installed the latest version of Quarto CLI
  • formatted my issue following the Bug Reports guide
Bug description

When using the --execute-dir <dir1> option R will be launched from the target directory <dir1> thus using the .Rprofile of that directory, this is regardless of where the source file lives.

However if you also provide --output-dir <dir2> R will instead be launched from the directory of the source file thus ignoring any .Rprofile file in <dir1> or <dir2>. I'm not 100% sure but I think in this case you are launching R from the source file directory and then internally running setwd() to move the directory to <dir1>. This issue occurs even if <dir1> and <dir2> are the same directory.

Steps to reproduce
> tree -a        
.
├── .Rprofile
├── code
│   └── test2.qmd
└── runme.sh

.Rprofile

cat("hi from code/.Rprofile\n")
cat("getwd() = ", getwd(), "\n")

test2.qmd

---
title: "Untitled"
format: html
---


```{r}
getwd()
```

runeme.sh

quarto render \
  code/test2.qmd \
  --execute-dir $(pwd) \
  --metadata "embed-resources: true"


quarto render \
  code/test2.qmd \
  --output-dir "$(pwd)" \
  --execute-dir "$(pwd)" \
  --metadata "embed-resources: true"
Actual behavior

The first render attempt (just using --execute-dir) makes use of the .Rprofile and produces stdout of:

> quarto render \
  code/test2.qmd \
  --execute-dir $(pwd) \
  --metadata "embed-resources: true"
hi from .Rprofile
getwd() =  /Users/gowercr1/Desktop/Work/xxx-testing-quarto 


processing file: test2.qmd
1/3                  
2/3 [unnamed-chunk-1]
3/3                  
output file: test2.knit.md

The second render however does not load the .Rprofile

> quarto render \
  code/test2.qmd \
  --output-dir "$(pwd)" \
  --execute-dir "$(pwd)" \
  --metadata "embed-resources: true"


processing file: test2.qmd
1/3                  
2/3 [unnamed-chunk-1]
3/3                  
output file: test2.knit.md
Expected behavior

Both should use the .Rprofile from the execution directory

Your environment

MacOS - 26.6.2
R version 4.6.1 (2026-06-24) -- "Happy Hop"

quarto --version
1.10.18

Quarto check output
> quarto check           
Quarto 1.10.18
[✓] Checking environment information...
      Quarto cache location: /Users/gowercr1/Library/Caches/quarto
[✓] Checking versions of quarto binary dependencies...
      Pandoc version 3.10.0: OK
      Dart Sass version 1.101.0: OK
      Deno version 2.7.14: OK
      Typst version 0.15.1: OK
[✓] Checking versions of quarto dependencies......OK
[✓] Checking Quarto installation......OK
      Version: 1.10.18
      Path: /Applications/quarto/bin

[✓] Checking tools....................OK
      TinyTeX: (not installed)
      Chrome Headless Shell: (not installed)
      VeraPDF: (not installed)

[✓] Checking LaTeX....................OK
      Using: Installation From Path
      Path: /Library/TeX/texbin
      Version: 2026

[✓] Checking Chrome Headless....................OK
      Using: Chrome found on system
      Path: /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
      Source: MacOS known location

[✓] Checking basic markdown render....OK

[✓] Checking R installation...........OK
      Version: 4.6.1
      Path: /Library/Frameworks/R.framework/Resources
      LibPaths:
        - /Library/Frameworks/R.framework/Versions/4.6/Resources/library
      knitr: 1.51
      rmarkdown: 2.32

[✓] Checking Knitr engine render......OK

[✓] Checking Python 3 installation....OK
      Version: 3.9.6
      Path: /Library/Developer/CommandLineTools/usr/bin/python3
      Jupyter: (None)

      Jupyter is not available in this Python installation.
      Install with python3 -m pip install jupyter

[✓] Checking Julia installation...

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the two quarto render commands with --execute-dir and with both --execute-dir and --output-dir, then trace the CLI's Single File execution-directory handling. Compare how R is launched in each case and verify that both commands load the .Rprofile from the execution directory when done.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript, r
Domain
cli
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
68/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.