如何从任何位置执行bash脚本?

时间:2013-02-01 15:54:27

标签: unix

在UNIX中,我读到将shell脚本移动到/ usr / local / bin将允许您从任何位置执行脚本,只需输入“[scriptname] .sh”并按Enter键。

我已经移动了一个包含普通用户和root权限的脚本,但我无法运行它。

剧本:

#! bin/bash

echo "The current date and time is:"
date

echo "The total system uptime is"
uptime

echo "The users currently logged in are:"
who

echo "The current user is:"
who -m

exit 0

当我尝试移动然后运行脚本时会发生这种情况:

[myusername@VDDK13C-6DDE885 ~]$ sudo mv sysinfo.sh /usr/local/bin

[myusername@VDDK13C-6DDE885 ~]$ sysinfo.sh

bash: sysinfo.sh: command not found

4 个答案:

答案 0 :(得分:6)

如果您想从到处运行脚本,则需要将其添加到PATH。通常/usr/local/bin位于每个用户的路径中,因此这应该起作用。 因此,请检查您的/usr/local/bin系统中PATH是否在您的终端上:

echo $PATH 

您应该看到列出了很多路径(例如/bin/sbin等...)。如果未列出,则可以添加它。更好的解决方案是将所有脚本保存在目录中,例如在home中,并将其添加到路径中。

要在路径中添加目录,您可以修改shell初始化脚本并添加新目录,例如,如果您使用的是BASH shell,则可以编辑.bashrc并添加以下行:

PATH=$PATH:/the_directory_you_want_to_add/:/another_directory/

这会将新目录附加到您现有的PATH

答案 1 :(得分:1)

你必须把它移到路径的某个地方。试试这个:

echo $PATH

我打赌/ usr / local / bin未列出。

我通过在$ HOME(即mkdir ~/bin)中创建一个bin目录来处理这个问题,并将其添加到我的〜/ .bashrc文件中(如果你还没有这个文件,请创建该文件):

export PATH=~/bin:$PATH

答案 2 :(得分:0)

要从任何目录运行可执行文件,请执行以下操作:

1)在主目录下创建一个bin目录,并将可执行脚本制作到其中。

[root@ip9-114-192-179 ~]# cd /home
[root@ip9-114-192-179 home]# mkdir bin
[root@ip9-114-192-179 home]#ls
bin  cloud-init-0.7.4-10.el7.noarch.rpm  cloud-user  epel-release-7-11.noarch.rpm       

2)将可执行脚本移动到bin direcoty中。

mv preeti.sh /home/bin

3)现在将其添加到您的path变量中并获取它。

[root@ip9-114-192-179 ~]# echo 'export PATH="$PATH:/home/bin"' >> /etc/profile
[root@ip9-114-192-179 ~]# source /etc/profile
[root@ip9-114-192-179 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/home/bin

4)检查是否在路径变量中添加了该路径。

[root@ip9-114-192-179 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/home/bin

5)验证脚本是否从任何随机目录运行。

答案 3 :(得分:0)

这听起来似乎很愚蠢,但是您确定它可以执行吗?您是否使用chmod + x script.sh? shell脚本顶部是否有正确的shell路径(即#!/ bin / bash)?另外,您是否使用UNIX或LINUX或FreeBSD? (最后一个问题很重要)