【问题标题】:cygwin- cd /cygdrive/c/path not workingcygwin- cd /cygdrive/c/path 不工作
【发布时间】:2013-11-08 09:45:03
【问题描述】:

我已经安装了 1.7.9 版本的 cygwin。我正在尝试从 .sh 文件执行 cd "/cygdrive/c/path" 。当我试图执行该 shell 脚本时,它会抛出如下错误 cd /cygdrive/c/path 不存在这样的文件或目录。

请帮忙

如果我从 cygwin 终端执行任何命令,所有命令都可以正常工作,但如果我将这些脚本放入 .sh 并尝试从 cygwin 终端执行 .sh 脚本,则它不起作用。我还添加了 CYGWIN_HOME 和环境变量路径。

请帮助在 cygwin 终端上执行 shell 脚本需要进行任何类型的设置

在 Shell 脚本中输入以下内容用于测试目的

cd "/cygdrive/c/DCS/"
echo "$1"
echo "$2"
echo "$3"
echo "$4"
echo "$5"
echo "$6"
echo "$7"
echo "$8"
mv "./conf/env.conf_$3" "./conf/env.conf"

我执行了 ls -la /cygdrive/c 命令。检查以下 DCS 文件夹的权限

drwx------+ 1 Administrators Domain Users          0 Oct 29 17:26 DCS

我正在调用脚本并得到以下错误

$ ./run.sh
: No such file or directory line 1: cd: /cygdrive/c/DCS/
app
0.4.2
DEV
test
test
NO
both
0.4.1
mv: cannot stat `./conf/env.conf_DEV\r': No such file or directory

【问题讨论】:

  • 请给出给出错误的 shell 脚本的“最小工作示例”,以及如何调用脚本的描述。
  • 我有一个 shell 脚本,其中包含 cd "/cygdrive/c/path" 和 mv 命令。我试图在 cygwin 终端上直接调用脚本作为 ./test.sh 一旦我执行,它会抛出如下错误----------------------------- ------------------ : No such file or directory line 9: cd: /cygdrive/c/DCS mv: cannot stat `./conf/env.conf_DEV\r' : 没有这样的文件或目录
  • 更新您的问题以显示实际完整的脚本。不要只写“路径”,向我们展示您正在使用的实际路径。 (正如 xnor 的回答所暗示的,我怀疑您正在使用的路径中的空格存在问题。)
  • 如果您在没有任何参数的情况下调用脚本,如何提供参数 $1$8
  • 您具体使用的是哪个外壳?

标签: cygwin


【解决方案1】:

执行ls -la /cygdrive/c 以查看路径是否真的存在。

确保在您的 shell 脚本中正确转义或引用路径,例如 mv "/cygdrive/c/path to file" /cygdrive/c/path\ to\ target

【讨论】:

    【解决方案2】:

    只需从新的 vi 会话重写脚本.. 用一个简单的 cd 命令试试。 如果您在记事本或其他编辑器中编写脚本,可能还有其他转义字符.. 为我工作得很好

    【讨论】:

    • 我在记事本中编辑了一个文件。例如 cd /application/Files/In 如果文件在 windows 和 cygwin 之间传输,那么可能有转义字符或其他导致特定错误的东西。从草稿文件重写文件中的代码(我使用 vi 编辑器,它工作正常)
    【解决方案3】:

    pwd 输出什么?如果是/home/UserName,那就是问题所在。 mintty 的默认 shell 在 /etc/passwd 中指定。如果不存在,请执行以下操作:

    以管理员身份运行 mintty.exe 并输入:mkpasswd -l -p "$(cygpath -H)" > /etc/passwd

    这会将/cygdrive/c/Users/Name 设置为主目录。我希望这能解决问题!

    欲了解更多信息:https://cygwin.com/cygwin-ug-net/mkpasswd.html#:~:text=The%20mkpasswd%20program%20can%20be,disconnected%20from%20its%20domain%20controller

    【讨论】:

      【解决方案4】:

      您在第一行缺少正确的shebang。 修改脚本为:

      #!/bin/bash
      cd "/cygdrive/c/DCS/"
      echo "$1"
      echo "$2"
      echo "$3"
      echo "$4"
      echo "$5"
      echo "$6"
      echo "$7"
      echo "$8"
      mv "./conf/env.conf_$3" "./conf/env.conf"
      

      你调用

      $ ./run.sh
      

      假设脚本包含关于哪个程序应该执行它的信息 并且错误说它没有找到它

      : No such file or directory line 1: cd: /cygdrive/c/DCS/
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-10-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多