【问题标题】:Cygwin gives "No such file or directory" error when running a shell script that executes another shell scriptCygwin 在运行执行另一个 shell 脚本的 shell 脚本时给出“没有这样的文件或目录”错误
【发布时间】:2019-07-29 19:00:45
【问题描述】:

我创建了一个简单的 shell 脚本,它在同一目录中执行另一个 shell 脚本。在 cygwin 之外执行时,这两个脚本都可以正常工作,但是当我在 mintty 中执行文件时,我收到“没有这样的文件或目录”错误。

我尝试更改第一个执行的脚本中的行以通过. ./script2.sh./script2.sh 等几种方式访问​​第二个脚本,结果相同。

注意 1:我意识到有几个类似的问题,但似乎没有一个可以举例说明或解决我遇到的确切问题,至少不是我能够找到的。

注意 2:由于这些脚本将在多个用户之间分发和共享,因此我希望无需手动更改 PATH 设置即可解决此问题。

我的主脚本(称为 mainScript.sh)的原始形式(没有我尝试的任何更改)的内容如下:

    #!/bin/bash

    . script2.sh

我在 Windows 命令提示符下使用的完整命令是: c:\path\to\mintty.exe -h always -e /cygdrive/C/Users/path/to/script/mainScript.sh

我在执行时收到此错误消息: /cygdrive/C/Users/path/to/script/mainScript.sh: line 3: script2.sh: No such file or directory

【问题讨论】:

  • 当您没有指定第二个脚本的路径时,shell 会在当前的 $PATH 中搜索它。如果您不想更改 $PATH,请指定 script2.sh 的完整路径。
  • 这不能使用我尝试过的相对路径./script2.sh 来完成吗?还是我错过了什么
  • 相对路径是指相对于您运行脚本的位置,而不是它所在的位置。
  • 我明白了。所以当我输入完整命令时,它会从我所在的任何目录中寻找 script2.sh 吗?在这种情况下 C:\Users?
  • @BlakeSimmons 是的。引用相对于脚本位置的文件实际上很困难(有时是不可能的/毫无意义的)。见BashFAQ #28

标签: bash cygwin mintty


【解决方案1】:

我相信在脚本的第一行之后添加pwdecho $PATHps 会有所启发。将这些结果与您在使用 mintty 启动交互式会话并发出相同命令时看到的结果进行比较。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-13
    • 2018-08-24
    • 1970-01-01
    • 1970-01-01
    • 2014-05-09
    • 2021-01-20
    • 2017-03-29
    • 2018-03-24
    相关资源
    最近更新 更多