简体   繁体   中英

Cmder bash script executing

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?

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.

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

它就像在 Unix shell 上一样工作

sh path/to/your/script.sh

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
}

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!!!

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM