Tom Regner <t...@goochesa.de> wrote: > Hi, > > Panruo Wu <p...@mymail.mines.edu> writes: > > > Dear list, > > > > > > #+begin_src sh=C2=A0 > > for np in {1..32} > > do > > =C2=A0 =C2=A0 echo $np > > done > > #+end_src > > > > when executing, the output only shows > > {1..32} > > which is clearly not I want.. > > > > After some investigation, I found that orgmode > > uses "sh" that cannot understand the for loop above. > > > > My question is, how can I suggest orgmode to use > > "bash" to execute shell script? > > > > I tried :shebang #!/bin/bash but it does not work > > I have the following in my config: > > --------------------%<-------------------------- > I really like org-babel to use zsh > #+begin_src emacs-lisp > (setq org-babel-sh-command "zsh") > #+end_src > --------------------%<-------------------------- > > It is apparently not possible to set this variable via #+BIND: to only > change this for one code block, at least I did not succeed to do so in > my attempts to do so -- but maybe I just didn't read enough of the > documentation to /get it right/. >
You are right that it is not possible: #+BIND is effective only when you are exporting - basically, people wanted to change various setting on export, and adding options for each and every one was too much, so Carsten implemented BIND as a general mechanism for that. But it does not apply to anything else; in particular, code block evaluation is completely separate. But you can use general emacs mechanisms to set it for a particular file: that's what file local variables are all about: (info "(emacs)Local Variables in Files") Nick > I don't know, if zsh||bash instead of sh breaks any assumptions org-mode > makes about the environment in which sh code blocks are executed; up > until now it works like a charm. > > Kind regards, > Tom >