将一个bash脚本添加到路径中
将一个bash脚本添加到路径中
我想将一个小脚本添加到Linux的路径中,这样我就不必在物理磁盘上运行它了。
这个脚本非常简单,是为了通过代理让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实现也可以,但不是我要找的。
当我们想要将一个bash脚本添加到路径中时,可能会遇到问题。下面将介绍这个问题的原因以及解决方法。
问题的原因是当我们将一个bash脚本添加到路径中时,可能会遇到权限问题。路径是一个存储可执行文件的地方,当我们在命令行中输入一个命令时,系统会在路径中查找并执行该命令。因此,如果我们想要在任何位置运行一个bash脚本,我们需要将它添加到路径中。
解决方法如下:
首先,我们需要创建一个文件夹来存储我们的bash脚本。假设我们将其命名为"~/bin"。
然后,我们需要将脚本添加到路径中。我们可以通过将以下行添加到"~/.bashrc"或"~/.bash_profile"文件中来实现:
export PATH="$HOME/bin:$PATH"
接下来,我们需要使文件夹"~/bin"中的脚本可执行。我们可以使用以下命令来改变文件的权限:
chmod -R 755 ~/bin
这样,我们的bash脚本就可以在任何位置运行了。我们可以通过在命令行中输入脚本的名称来执行它。
当我们想要将一个bash脚本添加到路径中时,可能会遇到权限问题。为了解决这个问题,我们需要创建一个文件夹来存储脚本,并将其添加到路径中。然后,我们需要改变文件的权限,使其可执行。这样,我们就可以在任何位置运行脚本了。
问题的原因是想要将一个目录添加到路径变量中,而不是将实际的二进制文件添加到路径中。解决方法是将以下脚本添加到路径中:
PATH=$MYDIR:$PATH
其中`MYDIR`是包含你的二进制文件的目录,比如:
PATH=/Users/username/bin:$PATH
你应该将这个脚本放在启动脚本(例如`.bashrc`)中,这样每次启动一个shell进程时都会运行它。
需要注意的是,顺序很重要,路径变量会按顺序进行评估。如果在路径变量的早期条目中找到与你的名称匹配的脚本,那么就会执行那个脚本。所以你可以将你的脚本命名为`apt-get`并将其放在路径的前面。但我不建议这样做,因为这样会令人困惑。你可以考虑使用shell别名来替代。
另外,你提到从当前目录中运行脚本没有问题。如果你指的是将当前目录添加到路径中(`. `),那么这是一个潜在的安全风险。某人可以在一个目录中放置一个常见工具(如`ls`)的木马变种,然后让你`cd`到该目录并无意中运行它。
你可能还想查看在unix.stackexchange.com和superuser.com上的这两个详细答案。
问题出现的原因:
- 用户想要将一个bash脚本添加到路径中,以便在任何地方都能运行该脚本。
解决方法:
1. 将脚本保存为没有.sh后缀的文件,比如apt-proxy,并将其放在某个目录中,比如~/bin。
2. 将~/bin添加到PATH中,输入export PATH=$PATH:~/bin。
3. 如果需要永久生效,将上一步的命令添加到~/.bashrc中。如果使用zsh,则添加到~/.zshrc中。
4. 然后就可以通过apt-proxy加上参数来在任何地方运行脚本了。
注意:
- 如果在特定的窗口中导出PATH变量,它不会在其他bash实例中更新。
- 通常不需要导出PATH,因为它很可能已经被标记为导出。此外,最好将个人路径放在现有PATH之前,而不是在后面。
- 在dirA和dirB中都有一个可执行文件my_command,并且PATH设置为PATH=dirA:dirB时,将首先找到dirA中的my_command,并运行dirA/my_command。通常,个人路径旨在覆盖系统范围的路径,所以通常最好将个人路径放在PATH之前。
- 注意zsh可能无法正确地识别~,可以使用绝对路径或$HOME代替。