为我的$ PATH上的可执行文件生成报告“找不到命令”

时间:2015-12-07 20:47:30

标签: bash shell unix makefile

我正在开发一个项目,要求我将c ++程序(prog1.cpp)转换为unix文本文件。我正在使用命令

dos2unix prog1.cpp

但是,我的makefile生成的文件无法正常工作。 make all应该生成一个可执行文件hantow,但是在执行hantow时,shell会读取:

-bash: hantow: command not found

我的代码没问题,没有错误。我可以看到目录中有一个名为hantow的文件,我已经运行了

chmod 755 hantow

我想问一下,这是你应该采取的唯一步骤ie.dos2unix还是有任何后续命令?

2 个答案:

答案 0 :(得分:1)

嗯,文本文件非常普遍,有一个大的(或次要的)问题:行结尾。

传统上,文本文件在不同系统上使用不同的行结尾:

    W31上的
  • CRLF
  • Un * x 上的
  • LF Mac上的
  • CR

幸运的是,Apple转移到 OSX (前一段时间)后,切换到正确的Un * x行尾。所以这些天你只能找到两个不同的行结尾。

与此同时,几乎任何体面的文本编辑器将处理任何行结束约定的文本文件(我认为最大的例外是notepad.exe仍然只能处理{{ 1}})。 此外,任何CRLF / C编译器都不关心实际的行尾。

因此没有真正的需要将“c ++程序转换为unix文本文件”。

OTOH,我仍然希望尽可能使用本机行结尾,C++是一个完美的工具。 (虽然现代VCS会自动为您处理行结束转换,因此这些天对dos2unix的需求较少。)

最后:您对dos2unix的问题与此无关。

答案 1 :(得分:0)

要回答您的具体问题:dos2unix通常应足以将文件的行结尾从CRLF转换为LF。可能还有其他原因导致代码无法执行,例如,如果代码使用了您环境中不可用的某些其他特定于操作系统的功能。还要确保Makefile和其他输入文件具有正确的行结尾。您可以在该文件上调用file,以查看它是否输出..., with CRLF line terminators之类的内容,在这种情况下您也可能希望在其上运行dos2unix