在bash-3.2 $中找不到命令

时间:2012-08-01 04:56:03

标签: linux bash

我尝试使用bash运行脚本文件,但显示错误

bash-3.2 $ example.sh:找不到命令

我也试过了 ls -l example.sh

我发现它不可执行,所以我使用了  sudo chmod 777 example.sh

我再次尝试运行它,但同样的错误即将来临。我仔细检查了我和使用ls的文件在同一个文件夹中。但我仍然无法执行脚本文件。

我终于尝试制作一个虚拟脚本文件并运行它,并发现了相同的错误

我认为BASH存在一些问题。有人可以帮助我解决问题吗?

我正在使用redhat,bash已经安装在我的系统中

由于我是linux上的新手,任何帮助都将不胜感激

4 个答案:

答案 0 :(得分:3)

.(当前目录)可能不在您的路径上。试试./example.shbash example.sh。您还可以将.添加到PATH环境变量中,但这通常不赞成。

答案 1 :(得分:3)

bash搜索$PATH中的命令。显然,当前目录.不在您的$PATH中。 (这是一件好事;在你的.$PATH是不安全的。)

您需要指定目录名称。只需输入:

./example.sh

顺便说一下,做:

sudo chmod 777 example.sh

是两种矫枉过正。首先,您不需要使用sudo;在您确实需要时,仅使用sudo 。据推测,您的个人帐户拥有该文件,因此您可以直接使用chmod

其次,777 方式过于宽松。它允许系统中的任何人读取,执行或修改 example.sh。 (如果你是系统中唯一的人,它可能并不重要,但它仍然是一个坏习惯。)通常,你应该使用755作为目录和需要可执行的文件,{{1}对于不需要执行的文件。

或者只是使用

644

设置执行权限(您的umask将阻止设置权限太松散)。

答案 2 :(得分:1)

您的bash PATH可能不包含.,请尝试键入以下命令来运行:

./example.sh

当您键入命令时,shell会搜索您的路径以尝试查找命令,如果当前目录(例如.)不是路径的一部分,则您尝试运行的脚本将获胜找不到。你必须明确地给它指向这个命令所在的路径。由于它位于您当前的目录中,您只需在命令前面添加./即可。

答案 3 :(得分:0)

首先确认bash路径 检查bash使用的路径:

 which bash

如果你得到“/ bin / bash” 然后添加

#!/bin/bash 
...
...

或bash脚本第一行的路径