Browse Source

Added org babel examples of using/resetting bash sessions

George Jones 1 year ago
parent
commit
de1502b99e
1 changed files with 78 additions and 0 deletions
  1. 78 0
      home/public/snippits/org/babel-sh.org

+ 78 - 0
home/public/snippits/org/babel-sh.org

@@ -0,0 +1,78 @@
+Demonstrate use of sessions with bash in org babel.
+
+* Simple command, set a variable
+
+  Get basics about the shell, etc.  Set a varable
+
+#+begin_src bash :exports both :results output :session TEST
+date
+echo SHELL is $SHELL
+echo BASH_VERSION is $BASH_VERSION
+echo PID is $$
+SET_IN_FIRST_BLOCK=something
+#+end_src
+
+#+RESULTS:
+: Wed Nov 16 07:45:29 AM EST 2022
+: SHELL is /bin/bash
+: BASH_VERSION is 5.1.16(1)-release
+: PID is 73788
+
+* Simple command, read variable set
+
+  Get pid. Should be same as previous example.
+
+  See if the variable exists
+
+#+begin_src bash :exports both :results output :session TEST
+date
+echo PID is $$
+[[ -v SET_IN_FIRST_BLOCK ]] && \
+    echo SET_IN_FIRST_BLOCK is $SET_IN_FIRST_BLOCK || \
+        echo SET_IN_FIRST_BLOCK is not defined
+#+end_src
+
+#+RESULTS:
+: Wed Nov 16 07:45:32 AM EST 2022
+: PID is 73788
+: > > SET_IN_FIRST_BLOCK is something
+
+
+* Setup - Don't ask about resetting the session
+
+  Pay no attention to that man behind the curtain.
+
+  This is emacs lisp foo that turn of prompting when killing the
+  buffer running the shell.
+
+#+BEGIN_SRC elisp
+  (setq kill-buffer-query-functions
+    (remq 'process-kill-buffer-query-function
+           kill-buffer-query-functions))
+#+END_SRC
+
+#+RESULTS:
+
+* Reset the session :results output
+
+  Kill the TEST session.   Variables, PID should reset.
+
+  https://emacs.stackexchange.com/questions/5293/how-to-force-an-org-babel-session-to-reset-or-initialize
+  #+begin_src bash :exports both :results output :session  (if (get-buffer "TEST") (if (kill-buffer "TEST") (print "TEST") (print "TEST")) (print "TEST"))
+
+  PS1="$ "
+  date
+  echo TEST session killed
+  echo PID is $$
+
+  [[ -v SET_IN_FIRST_BLOCK ]] && \
+    echo SET_IN_FIRST_BLOCK is $SET_IN_FIRST_BLOCK || \
+        echo SET_IN_FIRST_BLOCK is not defined
+  #+end_src
+
+  #+RESULTS:
+  :
+  : gmj@mx:$ Wed Nov 16 07:45:39 AM EST 2022
+  : TEST session killed
+  : PID is 73860
+  : gmj@mx:$ > > SET_IN_FIRST_BLOCK is not defined