在采购一个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"

这很奇怪。即使我们评论其整体内容,也会出现此消息。

开始时被调用的外壳似乎不错 #!/bin/sh, , 或者 #!/bin/bash.

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

有帮助吗?

解决方案

这将修复文件中的行结尾:

dos2unix my_env.sh

由于无论如何还是在当前的外壳中运行,因此不需要一个只能采购的文件中的shebang。但是,作为评论,对于人类读者来说可能是有益的。

其他提示

“:找不到命令”是我看到的错误(MIS-)由MS Windows系统处理的错误。例如,如果使用Notepad或WordPad进行了修改,然后重新提交。

(有人抱怨它找不到[Ctrl-M]可执行文件---这是一个完全有效的,尽管非常不便,并且对Unix/linux有些可疑的文件名)。

通过GNU运行文件 cat -A 或者 od -x 或者 hexdump 命令查看这些(并验证我的诊断...或通过 tr -d 带有适当的引用和“逐字”处理的系统。 (例如 tr -d '[Ctrl-V],[Ctrl-M]' 在典型Linux系统上的bash下)。

取决于您的版本 tr 您可能可以使用: tr -d '\r' 或者 tr -d \015 (015是Cr的八分之一,“马车返回”或 ^M --- MS-DOS用于使用Cr/LF对作为线终止,这只是MS-DOS在被遗忘的深渊中腐烂的众多原因之一当涉及互操作性时。单个字符的线终结者对其他任何人都没有真正的问题...但是,当主流计算的其他所有内容都使用单个字符时,成对会导致实际转换问题。

哦耶, vim 有方便 set ff (又名 set fileformat 可以从任何副本中处理UNIX,MACOS和MS-DOS线终止约定的选项 vim 无论您使用哪个平台。我似乎还记得 vim 默认值是检测文件正在使用的线终止的类型并保持不变(当然要默认到平台的本机上任何新文件)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top