在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
答案 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? (最后一个问题很重要)