【问题标题】:Execute .sh file in ubuntu on windows在 Windows 上的 ubuntu 中执行 .sh 文件
【发布时间】:2017-05-15 01:52:58
【问题描述】:

我创建了一个文件,1.sh,作为

c++ -c file1.cpp

c++ 文件1.o -o 文件1

我尝试在 Windows 上的 bash Ubuntu 上执行它。它告诉我

: 没有这样的文件或目录

c++:致命错误:没有输入文件

编译终止。

但是,如果我执行

c++ -c file1.cpp

c++ 文件1.o -o 文件1

直接可以正常编译文件(file1.cpp)。

我的问题是,.sh 文件不起作用的原因是什么以及如何解决?

【问题讨论】:

  • 似乎 c++ 是您系统中的可用命令。您可以尝试在脚本中使用命令的绝对路径代替 c++。您可以使用命令which c++ 找到它。
  • 我试图将 .sh 文件修改为 /usr/bin/c++ -c file1.cpp /usr/bin/c++ file1.o -o file1 ,仍然告诉我:没有这样的文件或目录
  • 检查/usr/bin 是您的环境变量PATH 的一部分。您可以使用以下命令检查它,echo $PATH 如果不是,请通过在您的主目录中的.profile 文件中修改来包含它。
  • c++ 可能是g++ 的别名,您的脚本可能无法理解。也许您没有使用您认为的 shell 执行它,或者终端的配置与执行脚本的配置不同。
  • 如何开始您的.sh 文件?从 bash 或使用双击它?如果你不从 bash 启动它,你应该检查 .sh 文件中的工作目录,即将它输出到控制台,这样你就可以验证你是否在预期的目录中。

标签: c++ bash shell ubuntu windows-subsystem-for-linux


【解决方案1】:

实际上,我想将其写为评论,但没有可用的格式。 (当它过时时,我会删除这个答案。)

我刚试过这个(在 cygwin 的 bash 上使用 g++):

$ g++ -c nothing.cc
g++: error: nothing.cc: No such file or directory
g++: fatal error: no input files
compilation terminated.

$

当然,我当前的工作目录中哪里没有文件nothing.cc...

所以,我的猜测(从 shell 脚本启动时 C++ 在错误的工作目录中运行)可能是合理的......

正如我已经建议的那样:插入一个

echo "$PWD"

一定要在你的 shell 脚本的开头。

更新:

出于好奇,我也尝试了这个(cygwin,再次 bash):

$ c++ -c nothing.cc
c++: error: nothing.cc: No such file or directory
c++: fatal error: no input files
compilation terminated.

$

现在,它看起来与 OP 非常相似。

唯一让我困惑的事实:OP 的错误消息看起来像是编译器是否没有得到任何输入:

$ c++
c++: fatal error: no input files
compilation terminated.

$

但我认为情况并非如此,因为在 OP 中它以
: No such file or directory 开头。
因此,看起来好像缺少一些文本...

【讨论】:

    猜你喜欢
    • 2016-03-21
    • 1970-01-01
    • 2016-06-16
    • 2015-12-14
    • 2019-11-17
    • 1970-01-01
    • 2021-07-17
    • 1970-01-01
    • 2012-11-24
    相关资源
    最近更新 更多