将bash脚本添加到路径

Man*_*eli 25 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
Run Code Online (Sandbox Code Playgroud)

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

我的问题是:如何将这个apt-proxy添加到PATH,所以我实际上可以称之为真正的apt-get?[从任何地方]

寻找命令行的解决方案,如果你知道GUI如何做它很好,但不是我想要的.

jlh*_*ora 44

试试这个:

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

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

  • 您不需要导出`PATH`,因为它很可能已经被标记为已导出。另外,最好是预先设置您的个人路径,而不是将其附加到现有的“ PATH”中。 (2认同)
  • @gniourf_gniourf 为什么最好在前面添加? (2认同)
  • @ compguy24:这样就可以对其进行搜索。如果在dirA和dirB中都有可执行文件my_command,并且PATH是PATH = dirA:dirB,那么将首先在dirA中找到它,因此它是dirA /将运行的my_command`。通常,个人用户优先于系统用户。这就是为什么通常最好在“ PATH”之前添加您的个人密码。 (2认同)

Bri*_*new 8

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

PATH=$MYDIR:$PATH
Run Code Online (Sandbox Code Playgroud)

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

PATH=/Users/username/bin:$PATH
Run Code Online (Sandbox Code Playgroud)

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

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

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