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

Mas*_*tan 5 unix linux bash shell terminal

我知道如何运行我创建的脚本。但是很痛苦,我需要通过终端更改目录并运行脚本。我需要运行slowloris进入Desktop 的脚本,现在将目录更改为Desktop并运行。

然后我有另一个根源。现在将目录更改为root并运行。

我的问题是: 如何通过仅从./script任何路径键入信息来运行任何shell脚本,就像我们通过msfconsole从任何路径给出信息从任何路径启动Metasploit一样。

Jon*_*ler 7

一种选择是简单地键入脚本的路径:

~/Desktop/script
Run Code Online (Sandbox Code Playgroud)

这可以正常工作,但有点笨拙。

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

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

正如Tripleee 指出的那样,将命令安装在目录上之后PATH,您无需再键入./script,而只需键入script。这与您键入的内容完全相同,ls而不是键入的内容/bin/ls,依此类推。一旦将程序安装到您的目录中PATH,它(出于许多目的)就无法与系统提供的命令区分开。

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

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

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

通常/通常/usr/local/bin是系统未提供的广泛使用的命令的合适位置。


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