2016-10-26 2 views
1

Ich habe meine Bash zu Bash Version 4.4.0 auf Mac OSX aktualisiert. Wie jedoch in this question erklärte, kann ich nicht die Bash-Version unter bin/bash aktualisieren, aber nur eine parallele Shell unter /usr/local/bin/bashPunkt Knitr zu Bash 4 auf Mac

installieren, wie kann ich diesen Schal Punkt knitr? engine.path scheint ignoriert werden:

```{r, engine='bash', engine.path='/usr/local/bin/bash'} 
which bash 
``` 

/bin/bash

Update

@ Kevin gibt: ja du hast recht, echo $BASH gibt /usr/local/bin/bash

ABER:

von knitr

```{bash, engine.path='/usr/local/bin/bash'} 
which bash 
echo $BASH 
bash --version 
``` 

gibt

/bin/bash

/usr/local/bin/bash

GNU bash, Version 3.2.57 (1) -freigabe (x86_64-apple-darwin15) Copyright (C) 2007 Free Software Foundation, Inc.

während das gleiche von der Kommandozeile gibt

enter image description here

bearbeiten 2

nach dem Re-Lektüre Antwort von @Kevin, dies funktioniert

```{r, engine = "bash", engine.path = "/usr/local/bin/bash"} 
export PATH="/usr/local/bin:$PATH" 

bash --version 
``` 

GNU bash, Version 4.4.0 (1) -release (x86_64-Apfel-darwin15.6.0)

Antwort

1

Was echo $BASH Druck macht? Es ist möglich, dass Ihr PATH/usr/bin vor /usr/local/bin oder sogar /usr/local/bin nicht über die PATH hat.

Zum Beispiel sehe ich:

enter image description here

darauf hinweist, dass engine.path tatsächlich eingehalten wird.

+0

Wenn ich einen unvollständigen Pfad gebe, bekomme ich eine Fehlermeldung, die liest '' '/ bin/sh:/usr/local/bin /: ist ein Verzeichnis'''. Könnte es sein, dass Knitr eine Version von '' # #! Bin/sh''' verwendet hat, die sh, nicht bash aufruft?Und das ist ein Symlink zur System-Bash, wie in dieser Frage vorgeschlagen: http://StackOverflow.com/Questions/5725296/Difference-Wintersh-and-Bash? Unter el Capitan ist es jedoch nicht mehr (leicht) möglich, Links im 'rootless' Modus zu ändern (http://stackoverflow.com/questions/32659348/operation-not-permitted-when-on-root-el-capitan-rootless) -behindert) – Latrunculia