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

标签 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:这里是 Opensuse 12.1。

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

添加:sh_setup 的前五行:

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

最佳答案

您的脚本 要么不可执行(使用 chmod +x sh_setup 使其成为可执行文件)要么 在其 hash-bang 行指定了一个损坏的(不存在的)解释器(sh_setup 文件的第一行,以 #! 开头)。

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

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

关于linux - 终端无法运行存储在 PATH 目录中的 shell 脚本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30483407/

相关文章:

linux - Grep-ing 同时保持第一行

linux - 如何使用 shell 脚本在文件中追加多行文本

linux - Bash 中的延迟监控

linux - 安装/升级到 python 3.4.3 时出错

linux - 在读取命令时保留带空格的字符串

linux -/libstdc++.so.6 : version install not found

regex - Sed正则表达式?

linux - apt-get 安装 mongodb-10gen 失败

go - 设置另一个进程的终端大小(ala `stty columns`)?

java - 使用 shell 脚本在远程计算机上执行多个命令