2015-07-14 2 views
0

Essayer d'exécuter blat http://www.blat.net/ à partir d'un script shell. J'ai placé la variable environnementale PATH, et je peux appeler blat de n'importe où avec l'invite de commande. L'envoi d'un e-mail à partir de la ligne de commande fonctionne correctement. Mais je ne suis pas capable de l'appeler depuis un script shell.Appel blat à partir du script shell, w8

Le script (simplifié)

#!/bin/bash 
blat 

Je reçois:

$ sh script.sh 
script.sh: line 2: blat: command not found 

J'ai aussi essayé en spécifiant le chemin absolu C:/Windows/System32/blat mais cela ne fonctionne pas non plus.

Répondre

1

Il existe plusieurs façons de résoudre ce problème. Si vous exécutez seulement blat à partir de Bash, vous pouvez juste le mettre en /usr/local/bin AKA C:\cygwin64\usr\local\bin.

Si vous avez besoin de l'exécuter à partir de Bash et de cmd/PowerShell, Windows "out of the box" a support assez pauvre pour cela. Avec Linux/Bash votre chemin d'accès est généralement quelque chose comme ceci:

 
/usr/local/bin:/usr/bin 

C'est grand parce que vous avez un espace de système, et un espace utilisateur pour les programmes. Cependant de Windows ressemble à ceci:

C:\Windows\System32;C:\Windows 

Comme vous pouvez le voir par défaut l'espace du système PATH a seulement. C'est mauvais parce que encourage les gens à faire des choses idiotes comme mettre des programmes utilisateur à côté des fichiers protégés du système d'exploitation . Ce dont Windows a besoin est l'équivalent de /usr/local/bin, un dossier sur le PATH, en avance sur tout ce qui permet aux gens de d'exporter des programmes en ligne de commande. Jusqu'à ce que vous arrive il suffit d'ajouter votre propre:

  1. Déplacer blat.exe-C:\Users\<user>\Documents

  2. Ajoutez à cela PATH:

    SETX PATH "%PATH%;C:\Users\<user>\Documents" /M 
    

Lorsque vous ajoutez à PATH de Windows, il est automatiquement ajouté à Bash PATH, donc le programme devrait être disponible pour tous les shells.

+0

merci. C'était utile. Je l'ai eu en travaillant en mettant blat.exe dans 'C: \ Users \ \ Documents' et en ajoutant ce chemin aux variables du système. Mais je ne comprends pas pourquoi cela n'a pas fonctionné en ayant blat.exe dans 'C: \ Windows \ System32' qui est naturellement un répertoire PATH. – evsc