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

时间:2015-03-24 14:25:11

标签: linux bash shell unix terminal

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

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

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

2 个答案:

答案 0 :(得分:4)

一个选项就是输入脚本的路径:

~/Desktop/script

这很好用,但有点笨拙。

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

  1. 创建一个目录$HOME/bin。将所有可执行脚本放入其中(如果需要 ** ,则使用chmod +x script使其可执行)。这样,就有一个地方可以查找您想要运行的脚本。
  2. $HOME/bin添加到您的PATH。我把我放在前面:PATH="$HOME/bin:$PATH,但如果你愿意,可以把它放在后面。
  3. 更新您的.profile.bash_profile(或可能的.bashrc)文件以设置PATH。但要注意不断增长的PATH。
  4. 作为tripleee noted,一旦命令安装在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。我倾向于保持我的脚本不可写。这样,我必须通过版本控制系统进行正式的更改过程。这意味着不受控制的变化的危险性会降低。

答案 1 :(得分:0)

您必须将脚本复制或链接到$ PATH上的目录中。通常/usr/bin/usr/local/bin/位于路径上,因此这些是将脚本链接或复制到的好位置。

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

如果您不是root用户,则需要sudo该命令或以root用户身份运行它。