#+TITLE: Debugging shell code that misbehaves #+DATE: 2010-10-14 #+LANGUAGE: en_US
* Use case Let's say that: - This file is in =~/Client/Spec= - I'm working on such a chunk of code: #+begin_src sh :results output :exports results grep indAllocType ../Ontology/champs.csv |\ iconv -f LATIN1 -t UTF8 |\ tr "[]" "|" | cut -d "|" -f 2 | cut -d " " -f 2- |\ sed 's%, %\n%g' #+end_src and that, when executing it, I've got an error with not enough context for me to understand what's the problem is. Sneak preview: under Cygwin, the =to= language (of the =iconv= command) must be =UTF-8= in the above case (with a dash). * Debug it So, in order to debug, I decide to add a =session= argument: #+begin_src sh :results output :exports results :session sva grep indAllocType ../Ontology/champs.csv |\ iconv -f LATIN1 -t UTF8 |\ tr "[]" "|" | cut -d "|" -f 2 | cut -d " " -f 2- |\ sed 's%, %\n%g' #+end_src and, there, something totally different is occurring: =grep= is not finding the file anymore. Why? Because adding the session argument makes the code executed from my *home directory*, while it was executed from the *document's directory* in the first place. So, this is not the right way to debug... as *conditions do change*. * Solution? What's the right solution for such a case? - Putting a full path to the file =champs.csv= (instead of the relative one) is not OK for me, as all of this is under SVN, and I want this to be executable on someone's else PC (even if placed somewhere else). - Add an explicit =cd= to the right place, before the commands execute. Not possible, for the same reason as above. Is there some natural way to work around this? Best regards, Seb -- Sébastien Vauban _______________________________________________ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode