Hi Seb >> why is it, that I can not use this code in sh blocks (I get sh: 2: Bad >> substitution), even though it is valid when I run the tangled >> script? Is this a known thing? >> >> #+begin_src sh :shebang "#!/bin/bash" :tangle test.sh >> for i in *.org; do >> echo cp "$i" "${i/%.org/.bak.org}" >> done >> #+end_src >> >> How can I get the above block to execute? > > I just copied your block into a fresh "test.org" file, and eval'ed the code > block: > > #+begin_src sh :shebang "#!/bin/bash" :tangle test.sh > for i in *.org; do > echo cp "$i" "${i/%.org/.bak.org}" > done > #+end_src > > #+results: > | cp | test-export4.org | test-export4.bak.org | > | cp | test-export5.org | test-export5.bak.org | > | cp | test-export7.org | test-export7.bak.org | > > Works perfectly for me, it seems, on: > > GNU Emacs 24.0.92.1 (i386-mingw-nt5.1.2600) of 2012-01-23 on MARVIN > Org-mode version 7.8.03 (release_7.8.03.410.g77fb) > > Best regards, > Seb
thanks for testing! That's what I'd like to get as well. I tried with emacs -Q with no success. Seems the sh block is not executed by my bash. After more thoughts on this my guess is that it has to do with dash being the default shell in debian. #+begin_src sh :shebang "#!/bin/bash" :tangle test.sh echo $_ ls -l /bin/sh #+end_src #+RESULTS: | /bin/sh | | | | | | | | | | | | lrwxrwxrwx | 1 | root | root | 4 | Sep | 27 | 14:23 | /bin/sh | -> | dash | How can I get this to be /bin/bash? Preferably from within org mode, but I am grateful for any hint. (Somehow this question seems familiar to me...) My setup: I am on Debian testing with GNU Emacs 24.0.93.1 (x86_64-pc-linux-gnu, GTK+ Version 3.2.3) of 2012-02-16 on zelenka, modified by Debian Org-mode version 7.8.03, pulled last week (how do I get the release info as well?) Regards, Andreas