web-dev-qa-db-ja.com

Cmder bashスクリプトの実行

Windowsで基本的なスクリプトを作成しました。

#!/bin/bash

echo Hello

私はConEmuの派生物であるCmderを使用しています。私はchmodで特権を変更しようとしましたが、それらは同じです。このスクリプトを実行する方法がわかりません。通常のLinuxの方法、つまり./hello.shは機能せず、hello.shと入力するだけでWindowsが開こうとします。このスクリプトをConEmu/Cmderで実行する方法は?

14
BadBot

cmderからbashを実行できることに気づきました。だから私はそれを次のようにすることができます:

> bash
$ ./yourScript.sh

またはより単純

> cat yourScript.sh | bash

免責事項:cmder(これをダウンロードしたばかり)とLinuxの新機能。

14
danicriss

私自身のCmderのインスタンスでは、bash [filename]は問題なく動作し、私はずっと単純であると信じています。

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

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

名前を入力するだけでスクリプトを実行できるようにする場合は、回避策として、エイリアスを作成して.bashrc といった:

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

または、.bashrcし、関数を介して使用できるようにします。

source /pathToTheScript/yourScript.sh

スクリプトは次のとおりです。

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

Unixシェルと同じように動作します

sh path/to/your/script.sh
4
Liran H

時間がない場合は結論にジャンプしてください:

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

ドキュメントで説明されているように、独自の.shファイルを$CMDER_ROOT/config/profile.d/*.shディレクトリに配置できます here

0
cjadeveloper