Comment puis-je installer un script à exécuter de n'importe où à partir de la ligne de commande?
Si j'ai une base de script Python, c'est avec hashbang et qu'est-ce-pas en place, alors que le terminal sous Linux je peux courir
/path/to/file/MyScript [args]
sans exécution par le biais de l'interprète ou des extensions de fichier, et il va exécuter le programme.
Alors je installer ce script, de sorte que je peux taper simplement
MyScript [args]
n'importe où dans le système et il va fonctionner? Cela peut-il être mis en œuvre pour tous les utilisateurs sur le système, ou doit-il être refait pour chacun? Dois-je tout simplement de placer le script dans un répertoire spécifique, ou sont les autres choses nécessaires?
Vous devez vous connecter pour publier un commentaire.
Le meilleur endroit pour mettre ce genre de choses est
/usr/local/bin
.C'est le lieu normal de mettre le custom installé les fichiers binaires, et devrait être au début de votre
PATH
.Il suffit de copier le script il y a (probablement à l'aide de
sudo
), et il doit travailler pour n'importe quel utilisateur./usr/local/bin
. Assurez-vous de faire les scripts exécutables trop!sudo chmod 744 /usr/local/bin/yourscript
devrait le faire.Soluce de faire un script python disponible n'importe où:
Faire un script python:
Savoir où votre python est:
Mettre ce code là:
Exécuter dans le même répertoire:
Monter un répertoire et il n'est pas disponible:
Pas trouvé!!! C'est comme nous le pensons, ajoutez le chemin d'accès au fichier du fichier python pour le $PATH
Ajouter le fichier:
Sauver d'elle, en ré-appliquant les .bashrc, et réessayer
Essayer de nouveau:
Imprime:
Le truc, c'est que le shell bash connaît la langue de fichier via le shebang.
Il suffit de créer
~/bin
et mettreexport PATH=$PATH:$HOME/bin
dans votre bashrc/profil. Ne salissez pas avec le système, il sera vous mordre en retour, faites-moi confiance.Peu plus de choses (la question mais pas de réponse):
export PATH=$HOME/bin:$PATH
n'est PAS sûr, pour bash sera votre~/bin
dossier pour les fichiers exécutables, et si leur nom correspond avec d'autres fichiers exécutables dans l'original de votre$PATH
vous serez surpris par l'inattendu/non travail exécution de la commande.chmod+x
lorsque vous enregistrez votre script dans~/bin
.~/bin
dossier, si vous êtes juste de tester quelque chose ou de travailler sur le script inachevé, il est toujours préférable d'utiliser ./$SCRIPT_NAME de votreCWD
pour exécuter le script de mise sous~/bin
.$HOME
, pas/home/$USER
. Et personnellement, j'ai mis$HOME/bin
à l'avant de mon$PATH
justement j'ai donc peut remplacer d'autres commandes.$HOME
. Mais veuillez me permettre d'être en désaccord avec votre deuxième point. Vous savoir ce que vous faites lorsque vous placez ~/bin avant $PATH, beaucoup (sinon la plupart) des gens ne connaissent pas les implications de ces mécanismes.La réponse rapide pour
lien symbolique
votre script dans un répertoire inclus dans votre système$PATH
.La réponse longue est décrit ci-dessous, avec une promenade à travers l'exemple, (c'est ce que je fais d'habitude):
a) Créer le script par exemple
$HOME/Desktop/myscript.py
:b) Modifier les autorisations du fichier de script pour le rendre exécutable:
$ chmod +x myscript.py
c) Ajouter un répertoire personnalisé à la
$PATH
(voir pourquoi dans la note ci-dessous) à utiliser pour l'utilisateur scripts:$ export PATH="$PATH:$HOME/bin"
d) Créer un lien symbolique vers le script comme suit:
$ ln -s $HOME/Desktop/myscript.py $HOME/bin/hello
Avis que
hello
(peut être n'importe quoi) est le nom de la commande que vous utilisez pour appeler votre script.Remarque:
i) La raison de l'utilisation d'
$HOME/bin
au lieu de la/usr/local/bin
est de séparer les scripts locaux de celles des autres utilisateurs (si vous le souhaitez) et d'autres installés choses.ii) De créer un lien symbolique, vous devez utilisez le chemin d'accès correct, c'est à dire
$HOME/bin
BONNE~/bin
PAS BON!Voici un exemple complet:
Mettre le script quelque part dans le CHEMIN d'accès (comme
/usr/local/bin
) est une bonne solution, mais ce forces tous les utilisateurs de votre système pour utiliser/voir votre script.Ajout d'un alias dans
/etc/profile
pourrait être un moyen de faire ce que vous voulez permettre aux utilisateurs de votre système pour annuler cette aide de launalias
de commande. La ligne à ajouter serait:sbin
).Type
echo $PATH
dans un shell. Ce sont les répertoires recherché lorsque vous tapezcommand
, afin de le mettre dans un de ces.Edit: Apparemment, ne pas utiliser de
/usr/bin
, utilisez/usr/local/bin
Il suffit de créer un lien symbolique vers votre script dans /usr/local/bin/:
Selon FHS, le
/usr/local/bin/
est le bon endroit pour des scripts personnalisés.Je préfère les faire
755
root:root
, après la copie de là.