我尝试使用bash运行脚本文件,但显示错误
bash-3.2 $ example.sh:找不到命令
我也试过了 ls -l example.sh
我发现它不可执行,所以我使用了 sudo chmod 777 example.sh
我再次尝试运行它,但同样的错误即将来临。我仔细检查了我和使用ls的文件在同一个文件夹中。但我仍然无法执行脚本文件。
我终于尝试制作一个虚拟脚本文件并运行它,并发现了相同的错误
我认为BASH存在一些问题。有人可以帮助我解决问题吗?
我正在使用redhat,bash已经安装在我的系统中
由于我是linux上的新手,任何帮助都将不胜感激
答案 0 :(得分:3)
.
(当前目录)可能不在您的路径上。试试./example.sh
或bash 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脚本第一行的路径