Как мне изменить каталог в командной строке с Clojure? - PullRequest
11 голосов
/ 13 октября 2010

Что мне нужно, так это взаимодействие с командной строкой в ​​командной строке Windows:

C:\temp1>clj some_script.clj
C:\temp2>

Где some_script.clj содержит что-то вроде:

(cd "c:\\temp2")

Так чтовопрос - как мне реализовать функцию cd?Экспериментировал с clojure.java.shell, но он не выглядит так, как мне нужно.Это может быть простой вопрос, проблема может быть в том, что я не владею Java?!

Ответы [ 2 ]

13 голосов
/ 13 октября 2010

Вы не можете сделать это в Java, поэтому вы не можете сделать это в Clojure. См. Изменение текущего рабочего каталога в Java?

2 голосов
/ 22 июля 2016

clojure может сделать это.Вам нужно только изменить динамическую глобальную переменную с именем *sh-dir*.запустите следующий код в вашем репл:

 (use '[clojure.java.sh])
 (sh "ls")
    => {:exit 0, :out "LICENSE\nREADME.md\nauto_deploy.iml\ndoc\nproject.clj\nresources\nsrc\ntarget\ntest\n", :err ""}

    (binding [*sh-dir* "c:/"] (sh "ls"))
{:exit 0,
 :out "$360Section
       $GetCurrent
       $Recycle.Bin
       Boot
       Documents and Settings
       ImbaMallLog.txt
       Intel
       MSOCache
       OEMSY
       PerfLogs
       Program Files
       Program Files (x86)
       ProgramData
       Python27
       Recovery
       System Volume Information
       Users
       Windows
       apache-ant-1.9.3
       bootmgr
       hiberfil.sys
       inetpub
       pagefile.sys
       ",
 :err ""}

см. документ для получения дополнительной информацииВы можете использовать (alter-var-root #'clojure.java.shell/*sh-dir* (constantly "the-cd-path")), чтобы постоянно его менять.Спасибо, что Исаак рассказал мне об этом.Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...