Ich habe einige Funktionsskripte und möchte sie kopieren /usr/bin
, um sie als normale Terminalbefehle zu verwenden. Ist es eine gute Praxis, sie mit der .sh
Erweiterung zu verwenden, oder kann ich sie ohne Erweiterung speichern?
66
/usr/local/bin
möglicherweise die bessere Wahl./usr/bin
und/usr/local/bin
sollten für alle Benutzer verfügbar sein, sind jedoch/usr/local/bin
besser für ausführbare Dateien geeignet , die nicht Teil von Paketen sind.#!/usr/bin/env bash
oder gesetzt habe#!/bin/bash
.Antworten:
Nein, es ist keine gute Praxis, Sie sollten Ihre Skripte ohne Erweiterung behalten. Beachten Sie, dass Skripte, die Teil von Paketen sind, keine .sh- Erweiterung haben, dh update-grub , nicht update-grub.sh . Wenn Sie immer noch nicht überzeugt sind, teilen Sie dem Google Shell Style Guide Folgendes mit:
PS Sie müssen Ihr Skript nicht einfügen
/bin
. Sie können ein Verzeichnis erstellen~/bin
und Ihr Skript dort ablegen. Das Verzeichnis~/bin
ist$PATH
standardmäßig in enthalten, sodass die dort enthaltenen Skripts wie alle anderen Shell-Befehle ausgeführt werden können.quelle
$PATH
standardmäßig enthalten" - Seit wann? Wie auch immer,~/.local/bin
ist wahrscheinlich eine bessere Wahl, da es ein Standard ist.Ich schließe mich der Empfehlung an,
~/bin
die automatisch zu Ihrer hinzugefügt wird$PATH
, wie Sergey sagte. Oder/usr/local/bin
, was vielleicht schon auf dem istPATH
. Jedoch:Erweiterungen sind selten in
/usr/bin
. In meinem System kann ich nur zwei finden:Wenn Sie also verpacken, lassen Sie die Erweiterung auf jeden Fall weg.
quelle
~/bin
wird$PATH
automatisch hinzugefügt, wenn es vorhanden ist, ohne dass es manuell hinzugefügt werden muss. Erstellen Sie einfach das Verzeichnis, melden Sie sich ab und wieder an.Setzen Sie einfach die folgende Zeile oben in die Datei:
Diese Datei wird dann automatisch wie folgt geschrieben: Shell Script ohne Erweiterung!
Denken Sie daran, der Datei die Ausführungserlaubnis zu erteilen.
Um das Skript so zu platzieren, dass es per Direktbefehl ausgeführt werden kann, besuchen Sie: Wo soll ich mein Skript platzieren, damit ich es per Direktbefehl ausführen kann?
quelle