如何从终端中的任何路径 运行 .sh 脚本?

How to run a .sh-script from any path in a terminal?

我知道如何 运行 我创建的脚本。但是我需要通过终端和 运行 我的脚本更改目录是一件很痛苦的事情。 我需要 运行 已进入桌面的 slowloris 脚本,现在将目录更改为桌面和 运行。

然后我在根目录下还有一个;现在将目录更改为 root 和 运行 that.

我的问题是: 如何通过从任何路径输入 ./script 来 运行 任何 shell-脚本 就像我们通过给出 [=13= 从任何路径启动 Metasploit ] 来自任何路径。

您必须将脚本复制或link 到 $PATH 上的目录中。通常 /usr/bin/usr/local/bin/ 在路径上,所以这些是 link 或将脚本复制到的好位置。

ln -s /path/to/your/script /usr/local/bin

如果您不是 root,您将需要 sudo 该命令或 运行 作为 root 用户。

一个选项是简单地键入脚本的路径:

~/Desktop/script

这很好用,但有点笨拙。

这就是 PATH 环境变量的用途。这就是 $HOME/bin 的用途。

  1. 为自己创建一个目录$HOME/bin。将所有可执行脚本放入其中(如果需要,请使用 chmod +x script 使它们可执行 ††)。这样一来,就可以在一个地方查找您想要 运行.
  2. 的脚本
  3. $HOME/bin 添加到您的 PATH。我把我的放在前面:PATH="$HOME/bin:$PATH,但如果你愿意,你可以把它放在后面。
  4. 更新您的 .profile.bash_profile(或可能 .bashrc)文件以设置 PATH。不过,请注意不断增长的 PATH。

tripleee 一样,一旦命令安装在 PATH 上的目录中,您就不再键入 ./script,而只需键入 script。这与您键入 ls 而不是 /bin/ls 等完全一样。一旦程序安装在您的 PATH 上的目录中,它(出于许多目的)就无法与系统提供的程序区分开来命令。

我的 $HOME/bin 目录中有大约 500 个脚本和程序。

请注意,这不需要任何特殊权限。如果您对您的计算机具有管理员访问权限,并且您认为其他用户可能会发现您的命令有用,那么您可以将 scripts/programs 安装在 PATH 上系统提供的目录之一中。但是,通常最好不要将程序添加到以下任何一个:

  • /bin
  • /usr/bin
  • /sbin
  • /usr/sbin

这里有often/usually /usr/local/bin 适合放置系统没有提供的广泛使用的命令


††最好用chmod a+x,go-w script;你的脚本不应该被其他人写入。您甚至可以简单地使用 chmod 555 scriptchmod 755 script。我倾向于让我的脚本不可写。这样,我必须通过版本控制系统进行正式的更改过程。这意味着不受控制的更改的危险较小。