尝试运行 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
#
最佳答案
您的脚本 要么不可执行(使用 在其 hash-bang 行指定了一个损坏的(不存在的)解释器(chmod +x sh_setup
使其成为可执行文件)要么 sh_setup
文件的第一行,以 #!
开头)。
您的 sh sh_setup
调用失败,因为它没有使用 $PATH
并且您在错误的目录中。
编辑:您的脚本显然是可执行的(起初我没有在您的屏幕截图中发现这一点),这给我们留下了一个可能不正确的解释器。
关于linux - 终端无法运行存储在 PATH 目录中的 shell 脚本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30483407/