ksh xyz.sh gives following error.
abc is symlink to xyz.sh
/sites/utils/local/bin/abc[452]: local: not found [No such file or directory]
/sites/utils/local/bin/abc[453]: local: not found [No such file or directory]
/sites/utils/local/bin/abc[454]: local: not found [No such file or directory]
bash xyz.sh - 工作正常。 sh xyz.sh -working fine。
无论如何,我可以指定将其作为bash或sh从脚本本身运行,因为此脚本作为自动化的一部分运行。 仅供参考:这里的默认shell是ksh :(
任何答案都会高度适用。 仅供参考:我检查了脚本的回车文本/ DOS文本字符并运行 sed -i' s / \ r //' xyz.sh多次。
答案 0 :(得分:1)
错误很明显。
ksh
没有local
内置版。检查[ this ]。
它与sh
一起使用,因为sh
通常是Ubuntu系统中dash
的符号链接。
无论如何我可以指定将其作为bash或sh来运行 脚本本身
当然是的!使用shebang。将以下内容放在脚本的开头。
#!/bin/bash
答案 1 :(得分:1)
从您的评论到其他答案,我们了解到您已在文件#!/bin/bash
中设置了shebang xyz.sh
。
仅当脚本执行时才会使用shebang
./xyz.sh
执行时如
ksh xyz.sh
shebang行被忽略,ksh用于解释脚本。 现在阅读其他答案,其余的说明。
答案 2 :(得分:0)
很多时候,这是在Windows上创建脚本并将其上传到LINUX / UNIX之后发生的。
问题是Windows无法理解Windows添加的行尾:CR
LF
(Windows风格),对于UNIX风格的行尾必须更改它( LF
)
使用Notepad ++或其他工具,只需找到\r\n
(在扩展模式下)并替换为\n
,就可以了。