J'ai des scripts fonctionnels et je veux les copier, /usr/bin
je veux les utiliser comme des commandes de terminal normales. Est-ce une bonne pratique de les utiliser avec l' .sh
extension ou puis-je les sauvegarder sans extension?
66
/usr/local/bin
peut être un meilleur choix./usr/bin
et/usr/local/bin
devraient tous deux être disponibles à tous les utilisateurs, mais/usr/local/bin
est mieux pour executables qui ne font pas partie des paquets.#!/usr/bin/env bash
ou#!/bin/bash
.Réponses:
Non, ce n'est pas une bonne pratique, vous devriez garder vos scripts sans extension. Notez que les scripts faisant partie de paquets n'ont pas d' extension .sh , c'est -à- dire update-grub , pas update-grub.sh . Si vous n'êtes toujours pas convaincu, sachez que Google Shell Style Guide indique:
PS Vous n’êtes pas obligé de mettre votre script
/bin
. Vous pouvez créer un répertoire~/bin
et y placer votre script. Directory~/bin
étant inclus$PATH
par défaut, les scripts qui y sont placés peuvent être exécutés comme toute autre commande shell.la source
$PATH
par défaut" - Depuis quand? Quoi qu’il en soit,~/.local/bin
c’est probablement un meilleur choix car c’est une norme.J'appuie la recommandation d'utilisation
~/bin
qui s'ajoute automatiquement à votre$PATH
, comme l'a dit Sergey . Ou/usr/local/bin
, qui peut déjà être sur lePATH
. Pourtant:Les extensions sont rares dans
/usr/bin
. Dans mon système, je ne peux en trouver que deux:Donc, si vous emballez, laissez définitivement de côté l'extension.
la source
~/bin
est ajouté à$PATH
automatiquement s'il existe, pas besoin de l'ajouter manuellement. Créez simplement le répertoire, déconnectez-vous et reconnectez-vous.Il suffit de mettre la ligne suivante en haut du fichier:
Donc, ce fichier sera automatiquement tapez: Shell Script sans aucune extension!
N'oubliez pas de donner l'autorisation d'exécution pour le fichier.
Pour mettre le script en tant que tel qui peut être exécuté par commande directe, visitez: Où dois-je placer mon script afin que je puisse l'exécuter par une commande directe?
la source