Добавьте путь bash script к пути

Я хочу добавить небольшой script в linux PATH, поэтому мне не нужно фактически запускать его там, где он физически размещен на диске.

script довольно прост - это предоставление доступа apt-get через прокси-сервер, который я сделал так:

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

Затем я сохранил это как apt-proxy.sh, установил его на + x (chmod), и все работает нормально, когда я нахожусь в каталоге, где находится этот файл.

Мой вопрос: как добавить этот apt-proxy в PATH, чтобы я мог называть его так, как если бы он был реальным apt-get? [из любого места]

Ищете решения для командной строки, если вы знаете, как сделать с помощью графического интерфейса, это приятно, но не то, что я ищу.

Ответ 1

Попробуйте следующее:

  • Сохраните script как apt-proxy (без расширения .sh) в некотором каталоге, например ~/bin.
  • Добавьте ~/bin к вашему PATH, набрав export PATH=$PATH:~/bin
  • Если вам это нужно, добавьте последнюю строку в ~/.bashrc. Если вы используете zsh, добавьте его вместо ~/.zshrc.
  • Затем вы можете просто запустить apt-proxy с вашими аргументами, и он будет работать где угодно.

Обратите внимание, что если вы export переменная PATH в определенном окне, она не будет обновляться в других экземплярах bash.

Ответ 2

Вы хотите определить этот каталог для переменной пути, а не для фактического двоичного файла, например

PATH=$MYDIR:$PATH

где MYDIR определяется как каталог, содержащий ваш двоичный файл, например

PATH=/Users/username/bin:$PATH

Вы должны поместить это в свой запуск script, например..bashrc, так что он запускает время, когда вызывается процесс оболочки.

Обратите внимание, что порядок важен, и PATH оценивается таким образом, что если script, соответствующее вашему имени, находится в более ранней записи в переменной пути, то тот, который вы выполните. Таким образом, вы можете назвать свой script как apt-get и поместить его ранее в путь. Я бы этого не сделал, так как это сбивало с толку. Вместо этого вы можете исследовать псевдонимы оболочки.

Я также отмечаю, что вы говорите, что он отлично работает в вашем текущем каталоге. Если вы имеете в виду, что у вас есть текущий каталог на вашем пути (.), то это потенциальный риск для безопасности. Кто-то может поместить в каталог некоторый троянский вариант общей утилиты (например, ls), затем перейдите в cd to этот каталог и запустите его непреднамеренно.

Ответ 3

сделать псевдоним для исполняемого файла в файле ~/.bash_profile, а затем использовать его из любого места или вы можете указать каталог, содержащий исполняемые файлы, которые нужно запускать из любого места, и которые будут делать трюк для вас.