web-dev-qa-db-fra.com

Exécution du script bash Cmder

J'ai créé un script de base sous Windows.

#!/bin/bash

echo Hello

J'utilise Cmder, dérivé de ConEmu. J'ai essayé de changer les privilèges avec chmod, mais ce sont les mêmes. Je ne sais pas comment exécuter ce script. La manière Linux normale, qui est: ./hello.sh ne fonctionne pas, et en tapant juste hello.sh, Windows essaie de l'ouvrir, ce qui est mauvais, car je le veux dans la console. Comment exécuter ce script dans ConEmu/Cmder?

14
BadBot

J'ai remarqué que vous pouvez exécuter bash à partir de cmder. Donc je pourrais le faire comme:

> bash
$ ./yourScript.sh

ou plus simple

> cat yourScript.sh | bash

Avertissement: Nouveau sur cmder (vient de le télécharger) et Linux moi-même.

14
danicriss

Sur ma propre instance de Cmder, bash [filename] fonctionne très bien, et je pense que c'est beaucoup plus simple:

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

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

Si vous voulez pouvoir exécuter le script en tapant simplement son nom, une solution consiste à créer un alias et à le placer dans votre .bashrc tel que:

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

Ou vous pouvez source un script dans votre .bashrc et le rendre disponible via une fonction:

source /pathToTheScript/yourScript.sh

où se trouve le script:

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

Cela fonctionne comme sur les shells Unix

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

Si vous n'avez pas le temps de passer à La conclusion ci-dessous:

TL: DR: Voici mon toying avec "Cmder> bash" sur Windows pour créer un script global:

J'ai créé un script externe:

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

avec le contenu

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

il peut être exécuté à partir du même dossier:

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

sur la création d'un lien simbolink:

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

il semble bien fonctionner en l'appelant simplement avec le nom:

λ mytest
Can you see me now?

mais si le fichier d'origine est modifié:

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

les changements ne sont pas reflétés en utilisant le lien:

λ mytest
Can you see me now?

La conclusion:

donc la meilleure option est de créer le script directement sur le dossier/bin:

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

et #!/bin/bash n'est même pas nécessaire avec Cmder sur Windows, et il s'exécute avec succès de partout dans le bash Cmder:

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

Vous pouvez mettre votre propre .sh fichiers dans $CMDER_ROOT/config/profile.d/*.sh répertoire, comme l'expliquent les documents ici

0
cjadeveloper