繁体   English   中英

将 bash 脚本添加到路径

[英]Add a bash script to 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 来做这很好,但不是我正在寻找的

试试这个:

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

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

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

PATH=$MYDIR:$PATH

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

PATH=/Users/username/bin:$PATH

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

请注意,顺序很重要,并且对 PATH 进行评估,以便如果在路径变量的较早条​​目中找到与您的名字匹配的脚本,那么您将执行该脚本。 因此,您可以将脚本命名为apt-get并将其放在路径的较早位置。 我不会这样做,因为它很混乱。 您可能希望改为调查 shell 别名。

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

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

作为最后一步,在遵循@jlhonora ( https://stackoverflow.com/a/20054809/6311511 ) 提出的解决方案后,更改文件夹“~/bin”中文件的权限。 你可以使用这个:

chmod -R 755 ~/bin

添加到@jlhonora 您在 ~./bashrc 或 ~./zshrc 中的更改不会反映,直到您执行 source ~./zshrc 或 source./bashrc,或重新启动您的电脑

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM