Clojure Git Bash for Windows不工作';莱恩·雷普';命令

Clojure Git Bash for Windows不工作';莱恩·雷普';命令,clojure,leiningen,git-bash,Clojure,Leiningen,Git Bash,我实际上使用的是git bash而不是默认的windows命令shell(cmd)。但是我不能在git bash中运行'lein repl'它没有显示任何内容,我必须按crtl+c重新获得控制权。 有什么建议吗? 多谢各位 --编辑 我正在运行lein而不是lein.bat,因为我在.bashrc中添加了别名lein=lein.bat,所以我认为这不是问题 lein-run在Git-Bash中运行良好,而leiningen在windows-cmd中运行良好。问题在于lein repl的明确性 当

我实际上使用的是git bash而不是默认的windows命令shell(cmd)。
但是我不能在git bash中运行'lein repl'
它没有显示任何内容,我必须按crtl+c重新获得控制权。

有什么建议吗? 多谢各位

--编辑

我正在运行
lein
而不是
lein.bat
,因为我在.bashrc中添加了
别名lein=lein.bat
,所以我认为这不是问题

lein-run
在Git-Bash中运行良好,而leiningen在windows-cmd中运行良好。问题在于
lein repl
的明确性


当我运行
which lein
时,我得到了
which:no lein in([MY-PATH-VAR])
使用GitBash作为终端,您可以安装而不是lein.bat脚本

将在GitBash中正确运行(因为它实际上是一个Unix环境)

我建议将安装在用户帐户目录中名为
bin
的目录中,例如:

c:/Users/your account/bin

bin
放入将允许您在GitBash命令行的任何位置运行
lein
命令


关于Emacs、lein和windows的说明 假设您从GitBash终端运行Emacs,也就是说,
runemacs
,lein脚本也将从Emacs正确调用。将Emacs安装目录添加到用户帐户
PATH
环境变量中,GitBash将在命令行中找到它

安装在Windows上的Emacs在从GitBash终端运行时工作得更好,因为您可以在Emacs中使用
ediff
,这需要GitBash终端提供的
diff
命令

我推荐的用于windows的Emacs安装


我的经验是,
lein repl
(我确实使用了lein bash脚本)会正常启动,也会将lein命令的启动消息打印到shell中,但随后会停止输出任何内容(尽管进程可能运行正常)。不提供交互式提示(第一个除外),不回显用户输入(第一个除外),也不打印评估结果。当使用Ctrl-C终止进程时,我的所有输入都会传递到底层shell(结果很有趣,比如
$(+34)bash:+:command not found


我的解决方案是对交互式命令使用
gitcmd
,如
leinrepl
leinfigwheel
等,这(很不幸,看起来)效果很好。在不同的终端仿真(Cmder)中运行Git
sh
进程也为我提供了一个工作的交互环境。

首先检查您是否已在windows中使用命令提示符中的以下命令安装了lein.bat 莱因——版本

如果lein可用,那么在gitbash中键入以下命令 别名lein='lein.bat'


在运行您的lein命令时,它肯定会工作…

我遇到了与ThomasH完全相同的问题,从Emacs shell调用
lein repl
将获得介绍性消息和提示

nREPL server started on port 55801 on host 127.0.0.1 - nrepl://127.0.0.1:55801
REPL-y 0.4.4, nREPL 0.8.3
Clojure 1.10.1
Java HotSpot(TM) 64-Bit Server VM 15.0.2+7-27
    Docs: (doc function-name-here)
          (find-doc "part-of-name-here")
  Source: (source function-name-here)
 Javadoc: (javadoc java-object-or-class-here)
    Exit: Control+D or (exit) or (quit)
 Results: Stored in vars *1, *2, *3, an exception in *e
。。。但当我试图让它做任何事情时,似乎都僵住了,比如:

user=> (+ 1 2 3 8) 
当我打开任务管理器时,我可以毫无理由地看到底层Java程序以大约30%的CPU持续运行,而我能够可靠地摆脱它的唯一方法就是从此处结束Java进程

但是经过大量的努力,我终于发现发生这种情况的原因是一个shell环境变量
TERM=emacs
。无论何时调用
M-xshell
,函数
comint term environment
都会为您输入它

(根据
comint.el
中的源代码,这样做是为了“让我们指定一个宽度”。它还提到“如果
TERM
不是一个有效的终端类型,一些使用terminfo的程序会非常困惑”。因此,您就有了它-看起来Java就是其中之一。)

要解决此问题,可以在调用
M-x shell
之前,将变量
system uses terminfo
设置为
't

(setq system-uses-terminfo t) 
这样做之后,Java现在终于有了响应能力,我可以在repl中进行评估

user=> (+ 1 2 3 8) 
14

如果你有这个问题,并且幸运地在这里绊倒了,我希望这会有所帮助=D

以下是我在Windows 10上的Git bash中运行此功能的有效方法。当我最初让它工作时,它很冷,但通过包含winpty帮助我找到了修复方法

  • 如果尚未将
    lein.bat
    文件添加到Path变量中,请执行步骤1-3。否则,跳到4。在系统属性->高级->环境变量区域中,选择
    路径
    变量
  • 单击编辑并将包含
    lein.bat
    的目录添加到此目录。我的是
    C:\ProgramFiles(x86)\lein
    -
    lein.bat
    存储在
    lein
    文件夹中
  • 单击“确定”,直到关闭提示
  • 通过打开命令提示符(windows键,然后键入
    cmd
    )确认更新工作正常
  • 输入
    lein
    。如果您还没有安装,它会提示您运行install命令。如果出现提示,请执行此操作,然后再次输入
    lein
    ,以确保其工作正常(应输出帮助菜单)
  • 关闭Git bash(如果已打开),然后再次打开
  • 输入别名repl='winpty lein.bat repl'。您可以选择您想要的别名,我使用了
    repl
  • 键入
    repl
    (或您添加的任何别名)。应该需要一秒钟,然后开始一个REPL提示符

  • 刚刚检查过,当我在git bash中运行
    lein.bat
    时,它对我有效。你能提供更多的细节吗?你的
    路径
    ,你如何在bash下运行
    lein
    ,如果你能在bash中运行
    java
    ,等等?我添加了一个编辑。如果你需要更多的信息,请告诉我。谢谢你。。不知道如果
    lein运行会发生什么