问题
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