Cmder bash script executing

て烟熏妆下的殇ゞ 提交于 2019-12-04 18:37:30

问题


I created basic script in Windows.

#!/bin/bash

echo Hello

I am using Cmder, ConEmu derivative. I tried to change the priviliges with chmod, but they are the same. I don't know how can I execute this script. Normal Linux way, which is: ./hello.sh does not work, and typing just hello.sh makes Windows try to open it, which is bad, since I want it in console. How to execute this script in ConEmu/Cmder?


回答1:


I've noticed you can run bash from cmder. So I could do it like:

> bash
$ ./yourScript.sh

or simpler

> cat yourScript.sh | bash

Disclaimer: New to cmder (just downloaded it) and Linux myself.




回答2:


On my own instance of Cmder, bash [filename] works just fine, and I believe much simpler:

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

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



回答3:


If you want to be able to run the script by simply typing its name, a workaround is to create an alias and put it into your .bashrc such as:

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

Or you can source a script inside your .bashrc and make it available through a function:

source /pathToTheScript/yourScript.sh

where the script is:

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



回答4:


It works just like on Unix shells

sh path/to/your/script.sh



回答5:


If you don't have time jump to The conclusion below:

TL:DR: Here my toying with "Cmder > bash" on Windows to create a Global script:

I've created a external script:

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

with the content

#!/bin/bash
echo 'Can you see me now?'

it can be executed from the same folder:

a@DESKTOP /c/Scripts/
λ ./test.sh
Can you see me now?

on creating a simbolink link:

λ ln -s /c/Portables/Scripts/GlobalesBash/test.sh /bin/mytest

it seems to work fine calling it with just the name:

λ mytest
Can you see me now?

but if the original file gets modified:

λ cat test.sh
#!/bin/bash
echo 'Yes, I see you'

the changes are not reflected using the link:

λ mytest
Can you see me now?

The conclusion:

so the best option is creating the script directly on the folder /bin:

λ cd /bin
λ vi aloha
λ cat aloha
echo 'aloha!!!'

and #!/bin/bash isn't even necessary with Cmder on Windows, and it gets executed successfully from everywhere in the Cmder bash:

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


来源:https://stackoverflow.com/questions/36196277/cmder-bash-script-executing

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!