当我使用Git Bash(在Windows上)时,我不能在没有指定其完整路径的情况下运行任何可执行文件,尽管它位于我的PATH变量中的文件夹中.看起来bash无法识别它.为什么?我可以修理吗?
我在其他语言中看到了一些与此相关的问题,并对此进行了相当多的研究.首先,在我们开始走下兔洞之前,我必须说明我为什么这样做.我正在打印一个二叉树,我找到了一种方法来做到这一点,我认为没有其他人找到它(在网上的任何地方找不到它我永远搜索过).它解决了很多与间距和冲突有关的问题,我可能会在以后提供它作为Prettyprint Btree问题的答案.无论如何,执行上述操作的一个重要部分是能够将换行符(光标)向上移动一行.我也会安排将一个回车移动一行.
我已经对这个名为"编辑1-3"的问题进行了三次编辑.
我的特定Windows版本(可能相关):Windows 10 v1607操作系统版本:14393.2035
问题是使用ANSI转义字符很容易完成
ANSI转义码:https://en.wikipedia.org/wiki/ANSI_escape_code
使用"\ 033 [A"是我想要实现的特定代码(从有关在python中移动一行的问题得到它).
所以问题解决了吗?哦不,甚至不接近.该问题是,显然窗户上挂着这个""" 精彩 '’"更新,可能有破产一切ANSI /控制台有关.下面链接到有关此问题,但具有不同的ANSI要求,但根本问题是相同的.
如何使用System.out.println在控制台中打印颜色?
tl:dr由于某些原因它不适用于Windows,你需要一个大型库来执行此操作或其他操作.
Sooo然后我尝试对更新本身做一些深入的研究,为什么这恰好是特定于Windows的(当然),我被引导到了这一点.
Windows问题的根本原因:https://github.com/Microsoft/WSL/issues/1173
tl; dr:基本上,更新更改了cmd.exe的默认设置,cmd.exe是java使用的默认控制台.更改的是如何为'子应用程序'AKA java处理ANSI代码的控制台设置(使用控制台但不是控制台本身的东西).默认值在更新之前,子应用程序继承了启用ANSI的默认控制台.现在(因为显然以前的默认设置破坏了东西)他们改变了它,以便子应用程序不从控制台继承默认设置.这意味着如果java想要启用ANSI,java必须自己有效地设置此控制台模式.显然有大量的libary用于java命令,但是有很多可用的库存有一些问题.首先他们需要maven,我不想要maven,我也不喜欢 喜欢需要一百万个额外的库来做一些非常简单的事情,它增加了我的代码依赖的东西(这很糟糕).所以我试图避免像"只使用JANSI"这样的简单解决方案setConsoleMode 对于ANSI.
在我完成阅读/理解后,我尝试进入我的注册表编辑器并尝试更改控制台的默认设置(cmd.exe),以便始终为子应用程序启用ANSI(AKA java).有人在github讨论中提出过建议,但令我惊讶的是,具体设置对我来说并不存在.(它应该在计算机 - > HKEY_CUURENT_USER - >"TrimLeadingZeros"和"WindowAlpha"之间的控制台中).
由于我无法编辑控制台设置而没有大型库充满了我不想要的东西,我尝试在盒子外面思考并且在java设置中搞砸了.我发现java确切地设置了它的控制台,并发现我可以更改该设置以在java中使用不同的控制台.我最近安装了git,并且知道git bash可用,所以我尝试使用下面的问题(以及谷歌一般)作为起点.
https://superuser.com/questions/1196463/start-sh-exe-bash-with-given-path
我无法找到合适的工作.它没有返回任何错误或做任何新的事情,就像所有.它甚至被设置为'当前项目',所以当我运行我的项目时,它应该做些不同的事情吗?我相信问题的一部分是我的根git文件夹是搞乱的(不在程序文件中).这可能是因为我使用的计算机是一台工作计算机,也许某些设置会影响安装git的位置,我不知道但我知道的是当我更改控制台时我尝试了这条路径:
C:\ Users \用户abbotts1 \应用程序数据\本地\程序\的Git\BIN\bash.exe
我也尝试过:
C:\ Users \用户abbotts1 \应用程序数据\本地\程序\的Git\bash.exe
和
C:\ Users \用户abbotts1 \应用程序数据\本地\程序\的Git\BIN\sh.exe
和
"C:\ Users\abbotts1\AppData\Local\Programs\Git\bin\sh.exe"--login -i
每次更改控制台后我都试过这段代码:
public class ExpressionEvaluator {
public static void main(String[] args) {
System.out.println("1"); …Run Code Online (Sandbox Code Playgroud)