web-dev-qa-db-fra.com

Ajouter un script bash au chemin

Je veux ajouter un petit script au CHEMIN linux, donc je n'ai pas besoin de l'exécuter là où il est physiquement placé sur le disque.

Le script est assez simple, il s'agit de donner accès à apt-get via un proxy, je l'ai fait comme ceci:

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

Ensuite, je l'ai enregistré sous apt-proxy.sh, défini sur + x (chmod) et tout fonctionne bien lorsque je suis dans le répertoire où ce fichier est placé.

Ma question est: comment ajouter ceci apt-proxy à CHEMIN pour que je puisse l'appeler comme si c'était le vrai apt -get? [de partout]

Vous recherchez des solutions en ligne de commande uniquement, si vous savez comment faire par GUI c'est sympa, mais pas ce que je cherche.

23
Mansueli

Essaye ça:

  • Enregistrez le script sous apt-proxy (sans le .sh extension) dans certains répertoires, comme ~/bin.
  • Ajouter ~/bin dans votre PATH, en tapant export PATH=$PATH:~/bin
  • Si vous en avez besoin en permanence, ajoutez cette dernière ligne dans votre ~/.bashrc. Si vous utilisez zsh, ajoutez-le à ~/.zshrc au lieu.
  • Ensuite, vous pouvez simplement exécuter apt-proxy avec vos arguments et il s'exécutera n'importe où.

Notez que si vous export la variable PATH dans une fenêtre spécifique, elle ne sera pas mise à jour dans les autres instances bash.

42
jlhonora

Vous voulez définir cela répertoire à la variable de chemin, pas au binaire réel, par exemple.

PATH=$MYDIR:$PATH

MYDIR est défini comme le répertoire contenant votre binaire, par exemple.

PATH=/Users/username/bin:$PATH

Vous devez mettre cela dans votre script de démarrage, par exemple .bashrc tel qu'il s'exécute chaque fois qu'un processus Shell est appelé.

Notez que l'ordre est important et le CHEMIN est évalué de telle sorte que si un script correspondant à votre nom se trouve dans une entrée antérieure de la variable de chemin, c'est celui que vous exécuterez. Donc vous pourriez nommer votre script comme apt-get et le mettre plus tôt dans le chemin. Je ne ferais pas ça car c'est déroutant. Vous souhaiterez peut-être rechercher les alias Shell à la place.

Je note également que vous dites que cela fonctionne bien à partir de votre répertoire actuel. Si vous entendez par là que vous avez le répertoire courant dans votre chemin (.) alors c'est un risque potentiel pour la sécurité. Quelqu'un pourrait mettre une variante de cheval de Troie d'un utilitaire commun (par exemple ls) dans un répertoire, puis vous amener à cd to ce répertoire et l'exécuter par inadvertance.

8
Brian Agnew

créez un alias pour l'exécutable dans le fichier ~/.bash_profile, puis utilisez-le de n'importe où ou vous pouvez trouver le répertoire contenant les exécutables dont vous avez besoin pour exécuter n'importe où et cela fera l'affaire pour vous.

0
Abhi