【问题标题】:Running sh script gives command not found for any unix/linux basic commands运行 sh 脚本会给出未找到任何 unix/linux 基本命令的命令
【发布时间】:2018-11-09 11:35:57
【问题描述】:

我正在运行具有基本命令的 Shell 脚本。

对于脚本中的任何命令,我都会收到如下错误:

第 3548 行:mv:找不到命令
第 3550 行:cmd:找不到命令
第 708 行:mkdir:找不到命令
第 715 行:cygpath:找不到命令
第 726 行:mv:找不到命令
第 727 行:cp:找不到命令
第 731 行:mv:找不到命令
第 732 行:cp:找不到命令
第 736 行:mv:找不到命令
第 737 行:cp:找不到命令
第 749 行:expr:找不到命令
第 770 行:expr:找不到命令

注意:我在我的 Windows 系统变量 PATH 中添加了 c:\cygwin\bin 和 c:\Cygwin\usr 下的各种其他目录,例如 sbin、X11R6、local。我也尝试用同样的问题重新安装 Cygwin。我使用的是 Windows 10。我在管理员模式下运行 cmd,然后运行 ​​bash。

【问题讨论】:

  • 您是否使用 Cygwin 终端 (mintty) 运行 cygwin?看来您没有运行 bash 登录 shell
  • 尝试使用完整的命令/exe 路径,例如 c:\cygwin\bin\mv
  • 你的 cygwin PATH——而不是 Windows PATH——是什么样的?
  • 顺便说一句,编写良好的脚本不使用 expr,这是 1970 年代的向后不兼容保留。符合 POSIX 的数学使用 $(( ... )) 代替。
  • 在您的脚本中,您是否完成了:PATH="some value"?我通常会说“显示你的脚本”,但鉴于行号,请不要。

标签: linux windows shell cygwin


【解决方案1】:

第一次调用 bash 必须是登录 shell。 如果不是,环境设置不正确

E:\cygwin64>bin\bash.exe
bash: arch: command not found
bash: ARCH: command not found
bash: ARCH: command not found
bash: dircolors: command not found

marco@FG /

虽然使用登录 shell 的环境是正确的

E:\cygwin64>bin\bash.exe -l

marco@FG ~

这就是 Mintty / Cygwin Terminal 快捷方式使用“-”的原因

$ mintty --help
Usage: mintty [OPTION]... [ PROGRAM [ARG]... | - ]

Start a new terminal session running the specified program or the user's shell.
If a dash is given instead of a program, invoke the shell as a login shell.
...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-02
    • 2015-08-01
    • 1970-01-01
    • 2023-02-18
    • 2013-03-18
    • 1970-01-01
    相关资源
    最近更新 更多