将bash脚本添加到路径

时间:2013-11-18 18:00:06

标签: linux bash shell path

我想在Linux PATH中添加一个小脚本,所以我不必在它实际放置在磁盘上的地方运行它。

脚本非常简单,就是通过代理提供apt-get访问,我就这样做了:

#!/bin/bash
array=( $@ )
len=${#array[@]}
_args=${array[@]:1:$len}
sudo http_proxy="http://user:password@server:port" apt-get $_args

然后我将其保存为apt-proxy.sh,将其设置为+ x(chmod),当我在放置此文件的目录中时,一切正常。

我的问题是:如何将此 apt-proxy 添加到 PATH ,以便我可以将其称为真正的apt-get? [来自任何地方]

寻找仅限命令行的解决方案,如果你知道如何通过GUI做得很好,但不是我想要的

4 个答案:

答案 0 :(得分:36)

试试这个:

  • 将脚本保存为apt-proxy(不带.sh扩展名)在某个目录中,例如~/bin
  • ~/bin添加到PATH,然后输入export PATH=$PATH:~/bin
  • 如果您需要永久使用,请在~/.bashrc中添加最后一行。如果您使用的是zsh,请将其添加到~/.zshrc
  • 然后你可以用你的参数运行apt-proxy,它可以在任何地方运行。

请注意,如果export特定窗口中的PATH变量,则不会在其他bash实例中更新。

答案 1 :(得分:8)

您希望将目录定义为路径变量,而不是实际的二进制文件,例如。

PATH=$MYDIR:$PATH

其中MYDIR被定义为包含二进制文件的目录,例如

PATH=/Users/username/bin:$PATH

你应该把它放在你的启动脚本中,例如.bashrc,以便每次调用shell进程时都会运行。

请注意,顺序很重要,并且会对PATH进行评估,以便在路径变量的早期条目中找到与您的名称匹配的脚本,那么就是您要执行的脚本。所以你可以将你的脚本命名为apt-get并将其放在路径的前面。我不会这样做,因为它令人困惑。您可能希望调查shell别名。

我还注意到你说它在当前目录下工作正常。如果你的意思是你的路径中有当前目录(.),那么这是一个潜在的安全风险。有人可以在目录中放置一些常用实用程序的木马变体(例如ls),然后转到cd to该目录并无意中运行它。

答案 2 :(得分:0)

将可执行文件的别名添加到〜/ .bash_profile文件中,然后从任何地方使用它,或者您可以从任何地方获取包含您需要运行的可执行文件的目录,这将为您提供帮助。

答案 3 :(得分:0)

最后一步,按照@jlhonora(https://stackoverflow.com/a/20054809/6311511)提出的解决方案表格后,更改文件夹“〜/ bin”中文件的权限。您可以使用:

chmod -R 755 ~/bin