Linux &引用;:“未找到命令”;

Linux &引用;:“未找到命令”;,linux,shell,export,shebang,Linux,Shell,Export,Shebang,在获取一个env文件(一系列变量导出)时会出现一些问题 例如: ... export MY_ROOT=/Soft/dev/blah/blah export MY_BIN=${MY_ROOT}/bin ... 导致 $. my_env.sh $echo $MY_BIN /bint/dev/blah/blah =>“/bin”似乎覆盖了变量的开头而不是后缀 有什么想法吗 顺便说一下,每次我们获取此文件时,都会报告一条错误消息: ": Command not found" 这很奇怪。。尽管我们对

在获取一个env文件(一系列变量导出)时会出现一些问题

例如:

...
export MY_ROOT=/Soft/dev/blah/blah
export MY_BIN=${MY_ROOT}/bin
...
导致

$. my_env.sh
$echo $MY_BIN
/bint/dev/blah/blah
=>“/bin”似乎覆盖了变量的开头而不是后缀

有什么想法吗

顺便说一下,每次我们获取此文件时,都会报告一条错误消息:

": Command not found"
这很奇怪。。尽管我们对其全部内容进行了评论,但仍会显示此消息

一开始调用的shell看起来不错/bin/sh,或
#/bin/bash

控制字符呢?如何在linux上筛选它们?

“未找到命令”是我在MS Windows系统(错误地)处理UNIX/linux shell脚本时看到的错误。例如,如果它是使用WebCV签出的,使用记事本或写字板修改,然后重新提交

(它抱怨找不到[Ctrl-M]可执行文件——这是一个非常有效的文件名,尽管对于UNIX/Linux来说非常不方便,而且有点可疑)

通过GNU
cat-A
od-x
hextump
命令运行该文件以查看这些(并验证我的诊断…或通过
tr-d
运行该文件,并对您的系统进行适当的引用和shell“逐字”处理。(例如
tr-d'[Ctrl-V],[Ctrl-M]“
在典型Linux系统上的Bash下)

根据您的
tr
版本,您可以使用:
tr-d'\r'
tr-d\015
(015是CR的八进制,“回车”或者^M---MS-DOS过去使用CR/LF对作为行终止,这只是MS-DOS在互操作性方面可能陷入被遗忘的深渊的众多原因之一。单字符行终止符对其他任何人都不会造成真正的问题……但当主流c历史上的所有东西都出现时,对会导致真正的转换问题为此,计算使用了单个字符)

哦,是的,
vim
有一个方便的
设置ff
(又称
set fileformat
选项,它可以从
vim
的任何副本处理UNIX、MacOS和MS-DOS线路终止约定,而不管您在哪个平台上。我似乎记得
vim
默认设置是检测文件正在使用的线路终止类型并保持不变(当然,对于任何新文件,默认为您平台的本机文件)。

“:Command not found”是我在MS Windows系统(错误地)处理UNIX/Linux shell脚本时看到的错误。例如,如果使用WebCVS签出,使用记事本或写字板修改,然后重新提交

(它抱怨找不到[Ctrl-M]可执行文件——这是一个非常有效的文件名,尽管对于UNIX/Linux来说非常不方便,而且有点可疑)

通过GNU
cat-A
od-x
hextump
命令运行该文件以查看这些(并验证我的诊断…或通过
tr-d
运行该文件,并对您的系统进行适当的引用和shell“逐字”处理。(例如
tr-d'[Ctrl-V],[Ctrl-M]“
在典型Linux系统上的Bash下)

根据您的
tr
版本,您可以使用:
tr-d'\r'
tr-d\015
(015是CR的八进制,“回车”或者^M---MS-DOS过去使用CR/LF对作为行终止,这只是MS-DOS在互操作性方面可能陷入被遗忘的深渊的众多原因之一。单字符行终止符对其他任何人都不会造成真正的问题……但当主流c历史上的所有东西都出现时,对会导致真正的转换问题为此,计算使用了单个字符)


哦,是的,
vim
有一个方便的
设置ff
(又称
set fileformat
选项,它可以从
vim
的任何副本处理UNIX、MacOS和MS-DOS线路终止约定,而不管您在哪个平台上。我似乎记得
vim
默认设置是检测文件正在使用的线路终止类型并保持不变(当然,对于任何新文件,默认为平台的本机文件)。

这将修复文件中的行尾:

dos2unix my_env.sh

因为它在当前shell中运行,所以不需要在只需源代码的文件中使用shebang。但是,作为注释,它可能会为人类读者提供信息。

这将修复文件中的行尾:

dos2unix my_env.sh

由于文件在当前shell中运行,因此不需要在只需源代码的文件中使用shebang。但是,作为注释,它可能会为人类读者提供信息。

我也看到了这一点。这几乎总是一个不正确的换行问题。如果文件处于版本控制下,请尝试设置换行设置(例如
svn:eol style
如果在svn下)右边,两个看起来奇怪的变量值(实际上是
$'/Soft/dev/blah/blah\r/bin'
,带有嵌入式CR),和错误消息是脚本文件中有回车符的症状。我也看到了这一点。这几乎总是一个不正确的换行问题。如果文件在版本控制下,请尝试将换行设置(例如
svn:eol style
如果在svn下)设置为正确,这两个看起来奇怪的变量值(实际上是嵌入CR的
$'/Soft/dev/blah/blah\r/bin'
),并且错误消息是脚本文件中有回车符的症状。可能是