5

在 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

4 回答 4

7

如果你想从任何地方运行脚本,你需要将它添加到你的PATH. 通常/usr/local/bin在每个用户的路径中,因此它应该可以工作。因此,在您的终端上检查您的系统/usr/local/bin中是否正在执行您的操作:PATH

echo $PATH 

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

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

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

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

于 2013-02-01T16:03:07.013 回答
1

您必须将其移动到路径中的某个位置。试试这个:

echo $PATH

我敢打赌 /usr/local/bin 没有列出。

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

export PATH=~/bin:$PATH
于 2013-02-01T15:57:44.127 回答
1

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

于 2019-07-03T18:54:10.090 回答
-1

要从任何目录运行可执行文件:

1)在您的主目录下创建一个 bin 目录,并将您的可执行脚本 mv 放入其中。

[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 目录中。

mv preeti.sh /home/bin

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

[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)验证脚本是否从任何随机目录运行。

于 2018-10-16T04:18:08.747 回答