未找到[没有此类文件或目录]错误,即使RH Linux 6.2上该目录中存在该文件

时间:2013-08-08 12:09:23

标签: linux shell

当我从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

有人可以帮忙吗?

5 个答案:

答案 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)

试试这些:

  • ksh /data/upgrade/upgrade_db.ksh

或当你拥有当前的irectory数据/ upgrade /

  • 。 ./upgrade_db.ksh

答案 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 Chazelashttps://unix.stackexchange.com/a/381263/17300的建议,您可以使用sed将其删除:

$ sed -i '1s/^\xEF\xBB\xBF//' check.sh

答案 4 :(得分:0)

我今天也面临同样的问题。

-ksh: line 24: run-pipeline: not found

我浏览了帖子,但找不到解决方案/说明,我检查了这些内容:

  • 文件肯定存在
  • $ PATH包含文件所在的路径
  • 我也尝试了其他炮弹(打击)
  • 文件不包含奇怪的字符(dos2unix,目录-v)
  • 没有权限问题(chmod + x和sudo)

原来,文件第一行中的路径太长:

#!/extremely/long/path/that/was/more/than/128/chars/long/python3.6
def rest_of_the_script():

将python3.6移动到较短的路径(少于128个字符),一切正常!