Windows Cmder bash脚本正在执行

Windows Cmder bash脚本正在执行,windows,bash,conemu,cmder,Windows,Bash,Conemu,Cmder,我在Windows中创建了基本脚本 #!/bin/bash echo Hello 我使用的是Cmder,ConEmu衍生物。我试图用chmod改变特权,但它们是一样的。我不知道如何执行这个脚本。正常的Linux方式,即:./hello.sh不起作用,只键入hello.sh会让Windows尝试打开它,这很糟糕,因为我想在控制台中打开它。如何在ConEmu/Cmder中执行此脚本?我注意到您可以从Cmder运行bash。所以我可以这样做: > bash $ ./yourScript.sh

我在Windows中创建了基本脚本

#!/bin/bash

echo Hello

我使用的是Cmder,ConEmu衍生物。我试图用chmod改变特权,但它们是一样的。我不知道如何执行这个脚本。正常的Linux方式,即:./hello.sh不起作用,只键入hello.sh会让Windows尝试打开它,这很糟糕,因为我想在控制台中打开它。如何在ConEmu/Cmder中执行此脚本?

我注意到您可以从Cmder运行
bash
。所以我可以这样做:

> bash
$ ./yourScript.sh
或者更简单

> cat yourScript.sh | bash

免责声明:我是cmder(刚下载)和Linux的新手。

在我自己的cmder实例上,
bash[filename]
工作得很好,我相信更简单:

C:\Users\Conor O'Brien
λ type test.sh
echo Hello

C:\Users\Conor O'Brien
λ bash test.sh
Hello

如果只需键入脚本名称即可运行脚本,解决方法是创建别名并将其放入
.bashrc
中,例如:

alias scriptName="bash /pathToTheScript/yourScript.sh"
或者,您可以在
.bashrc
中获取脚本的源代码,并通过以下函数使其可用:

source /pathToTheScript/yourScript.sh
其中脚本是:

#!/bin/bash
function your_function()
{
yourCode
}

如果你没有时间跳到下面的结论:

TL:DR:下面是我在Windows上玩“Cmder>bash”创建全局脚本的过程:

a@DESKTOP /c/Scripts/
λ vi test.sh
我创建了一个外部脚本:

a@DESKTOP /c/Scripts/
λ vi test.sh
内容

#!/bin/bash
echo 'Can you see me now?'
它可以从同一文件夹执行:

a@DESKTOP /c/Scripts/
λ ./test.sh
Can you see me now?
创建simbolink链接时:

λ ln -s /c/Portables/Scripts/GlobalesBash/test.sh /bin/mytest
用名字来称呼它似乎效果不错:

λ mytest
Can you see me now?
但如果原始文件被修改:

λ cat test.sh
#!/bin/bash
echo 'Yes, I see you'
这些更改不会通过以下链接反映:

λ mytest
Can you see me now?
结论:

因此,最好的选择是直接在文件夹/bin上创建脚本:

λ cd /bin
λ vi aloha
λ cat aloha
echo 'aloha!!!'
#/bin/bash
对于Windows上的Cmder甚至不是必需的,它可以在Cmder bash中的任何位置成功执行:

λ cd /c
a@DESKTOP /c
λ aloha
aloha!!!

它的工作原理与Unix shell上的工作原理相同

sh path/to/your/script.sh

您可以将自己的
.sh
文件放入
$CMDER\u ROOT/config/profile.d/*.sh
目录,正如文档解释的那样Windows不支持
#行,因此您需要执行程序,例如
bash hello.sh
(在Linux中可以这样做),或者更改
.sh
扩展名的文件关联-请参阅
stat
file
命令。谢谢,这样做对我最有效-sh在您当前的环境(例如conda环境)中运行脚本而bash会打开一个新的shell。