18

我在 Windows 中创建了基本脚本。

#!/bin/bash

echo Hello

我正在使用 Cmder,ConEmu 衍生产品。我尝试使用 chmod 更改权限,但它们是相同的。我不知道如何执行这个脚本。普通的 Linux 方式,即: ./hello.sh 不起作用,只输入 hello.sh 会使 Windows 尝试打开它,这很糟糕,因为我希望它在控制台中。如何在 ConEmu/Cmder 中执行这个脚本?

4

6 回答 6

16

我注意到您可以bashcmder运行。所以我可以这样做:

> bash
$ ./yourScript.sh

或更简单

> cat yourScript.sh | bash

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

于 2016-07-11T23:03:32.870 回答
10

在我自己的 Cmder 实例上,bash [filename]工作得很好,而且我相信要简单得多:

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

C:\Users\Conor O'Brien
λ bash test.sh
Hello
于 2017-03-12T22:21:27.673 回答
8

它就像在 Unix shell 上一样工作

sh path/to/your/script.sh
于 2019-03-17T11:08:52.870 回答
5

如果您希望能够通过简单地输入脚本名称来运行脚本,一种解决方法是创建一个别名并将其放入您的.bashrc例如:

alias scriptName="bash /pathToTheScript/yourScript.sh"

或者您可以在您的内部获取脚本.bashrc并通过函数使其可用:

source /pathToTheScript/yourScript.sh

脚本在哪里:

#!/bin/bash
function your_function()
{
yourCode
}
于 2017-09-22T12:39:37.820 回答
1

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

TL:DR: 我在 Windows 上玩弄“Cmder > bash”来创建一个全局脚本:

我创建了一个外部脚本:

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!!!
于 2019-03-16T16:20:24.907 回答
0

您可以将自己的.sh文件放入$CMDER_ROOT/config/profile.d/*.sh目录中,正如文档在此处解释的那样

于 2020-03-31T20:25:24.780 回答