Sébastien Vauban <wxhgmqzgwmuf-genee64ty+gs+fvcfc7...@public.gmane.org> writes:
> #+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. Hi Seb, This would be a bug. For me (ubuntu), the session does start up in the document's directory. Perhaps the emacs shell session behaves differently on your operating system (cygwin?)? > > So, this is not the right way to debug... as *conditions do change*. but should not > > * Solution? > > What's the right solution for such a case? Fix the bug. But failing that, > - 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. does it help to use a :dir header argument to specify default-directory for the session? Dan > > Is there some natural way to work around this? > > Best regards, > Seb _______________________________________________ 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