org-mode babel sh script + escaped(?) ~ 主目录的字符?
org-mode babel sh script + escaped(?) ~ char for home directory?
我在 org-mode babel 下有这个小 sh 脚本:
#+NAME: testHomeDir
#+BEGIN_SRC sh :var directory="./"
set -e
cd $directory
ls | head -5
#+END_SRC
注意:set -e
是为了在发生错误时立即停止脚本。
脚本在完整路径下运行良好:
#+CALL: testHomeDir("/home/picaud/Temp")
#+RESULTS:
:RESULTS:
current issues.pdf
AnnotatedPDF
Bitbucket
compareScript.wls
Data
:END:
然而,当与 ~
(我的主目录)一起使用时,它不再起作用:
#+CALL: testHomeDir("~/Temp")
我得到
sh: 4: cd: can't cd to ~/Temp
错误信息。
另请注意
#+CALL: testHomeDir("\~/Temp")
#+CALL: testHomeDir("\~/Temp")
不工作也。
我猜 ~
字符在某处被转义了(在 Emacs 中?在 sh 中?)...
我的问题是:如何解决?
~ 未被 shell 扩展,因为它是在 Emacs 中设置的,并且是文字字符串“~”。为了获得扩展,您需要 运行 通过 eval:
directory=$(eval echo $directory)
在您尝试使用它之前。
我在 org-mode babel 下有这个小 sh 脚本:
#+NAME: testHomeDir
#+BEGIN_SRC sh :var directory="./"
set -e
cd $directory
ls | head -5
#+END_SRC
注意:set -e
是为了在发生错误时立即停止脚本。
脚本在完整路径下运行良好:
#+CALL: testHomeDir("/home/picaud/Temp")
#+RESULTS: :RESULTS: current issues.pdf AnnotatedPDF Bitbucket compareScript.wls Data :END:
然而,当与 ~
(我的主目录)一起使用时,它不再起作用:
#+CALL: testHomeDir("~/Temp")
我得到
sh: 4: cd: can't cd to ~/Temp
错误信息。
另请注意
#+CALL: testHomeDir("\~/Temp")
#+CALL: testHomeDir("\~/Temp")
不工作也。
我猜 ~
字符在某处被转义了(在 Emacs 中?在 sh 中?)...
我的问题是:如何解决?
~ 未被 shell 扩展,因为它是在 Emacs 中设置的,并且是文字字符串“~”。为了获得扩展,您需要 运行 通过 eval:
directory=$(eval echo $directory)
在您尝试使用它之前。