Je me demande s'il existe un équivalent Unix pour la variable d'environnement Windows PATHEXT
.
Pour ceux qui n'ont pas d'arrière-plan Windows: l'ajout d'un suffixe de fichier à PATHEXT
me permet d'exécuter un script sans taper ce suffixe dans cmd.exe. Par exemple, sur mon ordinateur Windows, PATHEXT contient le suffixe .pl
et lorsque je veux exécuter un script Perl dans cmd.exe, je peux simplement taper my-script
et il est exécuté. Cependant, afin d'exécuter le même script bash, je dois écrire le nom complet: my-script.pl
.
Comme je travaille actuellement sur Windows et Unix, je tombe presque toujours dans le piège d'oublier de taper le suffixe lorsque je vais à nouveau dans une boîte Unix.
shell
environment-variables
René Nyffenegger
la source
la source
.sh
précédé.pl
,foo.sh
sera exécuté. stackoverflow.com/a/7839178/180275Réponses:
court: non
plus: les scripts shell nécessitent un nom de fichier complet, mais vous pouvez définir des alias pour que vos commandes s'y réfèrent par différents noms. Par exemple
la source
La solution la plus simple consiste simplement à ne pas utiliser d'extensions pour vos scripts. Ils ne sont pas nécessaires et servent uniquement à vous identifier le type de script, mais pas à l'ordinateur. Alors que Windows utilise des extensions pour identifier le type de fichier, les systèmes * nix (à de très rares exceptions telles que
gzip
) ne le font pas.Notez que les binaires n'ont pas d'
.exe
extension dans * nix, ils sont juste appelésfoo
, nonfoo.exe
. Donc, si vous voulezfoo.pl
être exécutable en tant quefoo
, enregistrez simplement le fichier commefoo
en premier lieu.Alternativement, si vous avez vraiment besoin des extensions pour une raison quelconque, allez dans le répertoire dans lequel vous enregistrez vos scripts et exécutez ceci:
Cela itérera sur tous les fichiers avec des extensions et, pour chaque fichier
foo.ext
d'entre eux, créera un lien appeléfoo
qui pointe versfoo.ext
. Notez que cela échouera si vous avez plusieurs scripts avec le même nom mais des extensions différentes.la source
Si vous voulez vraiment le faire, il existe un moyen. Ajoutez ce qui suit à la fin de
.bashrc
dans votre répertoire personnel et définissez lesPATHEXT
noms d'extension avec des points séparés par:
. (Modifié pour inclure les points pour correspondre au comportement de Windows.) Utilisez-le à vos risques et périls.N'oubliez pas que vous pouvez utiliser tab pour compléter le nom de la commande s'il n'y a pas d'autre commande commençant également par
my-script
.la source