Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 从shell脚本调用blat,w8_Windows_Bash_Shell_Blat - Fatal编程技术网

Windows 从shell脚本调用blat,w8

Windows 从shell脚本调用blat,w8,windows,bash,shell,blat,Windows,Bash,Shell,Blat,正在尝试从shell脚本执行blat。我设置了环境PATH变量,可以在命令提示下从任何位置调用blat。从命令行发送电子邮件工作正常。但是我不能在shell脚本中调用它 (简化)脚本 我得到: $ sh script.sh script.sh: line 2: blat: command not found 我还尝试指定绝对路径C:/Windows/System32/blat,但也没有成功 有很多方法可以解决这个问题。如果您只从Bash运行blat,那么您可以 只要把它放在/usr/local

正在尝试从shell脚本执行blat。我设置了环境
PATH
变量,可以在命令提示下从任何位置调用
blat
。从命令行发送电子邮件工作正常。但是我不能在shell脚本中调用它

(简化)脚本

我得到:

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

我还尝试指定绝对路径
C:/Windows/System32/blat
,但也没有成功

有很多方法可以解决这个问题。如果您只从Bash运行blat,那么您可以 只要把它放在
/usr/local/bin
AKA
C:\cygwin64\usr\local\bin

如果您需要从Bash和cmd/PowerShell运行它,Windows“开箱即用”已经提供 支持率很低。使用Linux/Bash,您的路径通常看起来 大概是这样的:

/usr/local/bin:/usr/bin
C:\Windows\System32;C:\Windows
如您所见,默认情况下,路径仅具有系统空间。这很糟糕,因为它 鼓励人们做一些愚蠢的事情,比如把用户程序放在受保护的程序旁边 操作系统文件。Windows所需要的相当于
/usr/local/bin
,路径上的一个文件夹,位于人们可以访问的所有内容之前 转储命令行程序。在此之前,您只需添加自己的:

  • blat.exe
    移动到
    C:\Users\\Documents

  • 将其添加到路径:

    SETX PATH "%PATH%;C:\Users\<user>\Documents" /M
    
    SETX路径“%PATH%;C:\Users\\Documents”/M
    
  • 当您将其添加到Windows路径时,它会自动添加到Bash路径,因此
    该程序应可供所有Shell使用。

    谢谢。这很有帮助。我将blat.exe放入
    C:\Users\\Documents
    并将该路径添加到系统变量中,从而使其正常工作。但是我不太明白为什么在
    C:\Windows\System32
    中有blat.exe不能正常工作,这自然是一个路径目录。
    SETX PATH "%PATH%;C:\Users\<user>\Documents" /M