当我从Linux(RH Linux 6.2)执行脚本时,它没有找到[没有这样的文件或目录]错误,即使该文件存在于该目录中(检查权限并且它们没问题)
示例:
md1silinux04:/data/upgrade> /data/upgrade/upgrade_db.ksh
-ksh: /data/upgrade/upgrade_db.ksh: not found [No such file or directory]
md1silinux04:/data/RAIL/rpo402/db/upgrade> ls /data/upgrade/upgrade_db.ksh
/data/upgrade/upgrade_db.ksh
有人可以帮忙吗?
答案 0 :(得分:5)
也许你在文件的每一行末尾都有ctrl-M(回车)。
查看: cat -v /data/upgrade/upgrade_db.ksh
修复: perl -p -i -e“s / \ r // g”/data/upgrade/upgrade_db.ksh
答案 1 :(得分:0)
输入:
ls -ls /data/RAIL/rpo402/db/upgrade
列出文件的输出并查看其权限。
确保文件不为空。 确保该文件具有作为shell执行的权限。
chmod +x upgrade_db.ksh
查看文件的第一行,确保它有一个适合shell脚本的标题。也许Korn Shell需要在头文件中声明shell。
检查dmesg以查看是否有任何错误消息,可能是文件系统和检查inode。
答案 2 :(得分:0)
试试这些:
或当你拥有当前的irectory数据/ upgrade /
答案 3 :(得分:0)
尽管OP不太可能出现问题,但是如果您的爆炸角色具有该字符,则可能会出现类似的错误消息-它把我带到了这里。就我而言,脚本仍然可以执行,但是错误非常令人讨厌-尤其是因为我正在帮助某人执行“正式”程序,并且在这种情况下不欢迎出现错误。
示例输出:
CS-015: # /bin/ksh check.sh
check.sh[1]: #!/bin/ksh: cannot execute - No such file or directory
check.sh
猫显示为的结果
$ cat check.sh
#!/bin/ksh
THIS_SCRIPT="$(basename $0)"
echo "$THIS_SCRIPT"
exit 0
# Nothing else matters; I had narrowed it to here...
在这种情况下,我继承了该文件,并显示了一个十六进制转储:
$ hexdump -C check.sh
00000000 ef bb bf 23 21 20 2f 62 69 6e 2f 6b 73 68 0a 0a |...#! /bin/ksh..|
00000010 54 48 49 53 5f 53 43 52 49 50 54 3d 22 24 28 62 |THIS_SCRIPT="$(b|
...
根据Stéphane Chazelas在https://unix.stackexchange.com/a/381263/17300的建议,您可以使用sed将其删除:
$ sed -i '1s/^\xEF\xBB\xBF//' check.sh
答案 4 :(得分:0)
我今天也面临同样的问题。
-ksh: line 24: run-pipeline: not found
我浏览了帖子,但找不到解决方案/说明,我检查了这些内容:
原来,文件第一行中的路径太长:
#!/extremely/long/path/that/was/more/than/128/chars/long/python3.6
def rest_of_the_script():
将python3.6移动到较短的路径(少于128个字符),一切正常!