终端无法运行存储在PATH目录中的shell脚本文件

时间:2015-05-27 13:06:37

标签: linux shell terminal opensuse

获取"未找到命令"在尝试运行shell脚本文件时。文件本身存储在一个目录中,该目录被添加到PATH中,但终端并没有将其识别为shell脚本。

这是我尝试的序列:

tajimura/GAMIT% echo $PATH
/usr/local/bin:/usr/bin:/bin:/user/games:/usr/X11R6/bin:/usr/bin/X11:/usr/lib64/jvm/jre/bin:/home/tajimura/GAMIT/gamit/bin:/home/jaimura/GAMIT/kv/bin:/home/tajimura/GAMIT/com
tajirmura/GAMIT% ls /home/tajimura/GAMIT/com/sh_steup
/home/tajimura/GAMIT/com/sh_setup
tajimura/GAMIT% sh_setup
sh_setup: Command not found.
tajimura/GAMIT% sh sh_setup
sh: sh_setup: No such file or directory
tajimura/GAMIT% l /home/tajimura/GAMIT/com/sh_setup
-rwxr-xr-x 1 tajimura users 11109 Aug 20   2013 /home/tajimura/GAMIT/com/sh_setup

以下是截图:

PS:在这里打开12.1。

补充:我在前4天执行得很好,所以我猜hashbang不是问题。但我不能保证工作站在我的会话之间没有重新启动,所以也许(只是可能)-noexec是原因。但是,脚本位于硬盘上的主目录中,它不是可移动驱动器。

ADDED:sh_setup的前五行:

    /home/tajimura% sed 5q /home/tajimura/GAMIT/com/sh_setup
    #!/bin/csh -f
    #
    #doc Check and setup the GAMIT tables directory
    #doc
    #

2 个答案:

答案 0 :(得分:2)

您的脚本要么不可执行(使用chmod +x sh_setup),要么指定哈希 - 爆炸线上的破解(不存在)解释器(第一行) sh_setup文件,以#!开头。

您的sh sh_setup调用失败,因为它没有使用$PATH,而且您在错误的目录中。

编辑:您的脚本显然是可执行的(我最初没有在您的屏幕截图中发现这一点),这给我们留下了可能不正确的解释器。

答案 1 :(得分:0)

我发现了一个意想不到的问题解决方案。如果我用bash而不是csh调用脚本,一切都很好。