Wie kann ich mein Bash-Shell-Skript in einem beliebigen Verzeichnis ausführen?

5

Ich habe ein Shell-Skript bei /home/joey/hello.sh

Nun, ich möchte es überall ausführen pwd. cut. sort. grep.

Also tippe ich einfach hello.sh obwohl ich in einem anderen verzeichnis bin.

Joey
quelle
1
Zu Ihrer Information, Sie brauchen die Erweiterung nicht .sh. Es ist eine Konvention, die Skriptnamen allgemein hinzuzufügen, aber wenn Sie sie hinzufügen ~/bin es ist besser, das herauszunehmen. Es ist auch eine gute Idee zu laufen type myscriptname vor Gebrauch myscriptname als Name für Ihr Skript; ob type kehrt zurück not foundDann sind Sie sicher - Sie verwenden keinen Namen, der bereits für einen anderen Befehl verwendet wurde.
Wildcard

Antworten:

2

Um ein Skript auszuführen, müssen Sie es ausführbar machen.

 chmod u+x  /home/joey/hello.sh

nachdem Sie mit ausführen können

 ./hello.sh    # if you are in the same directory
 ~/hello.sh    # if you are in another directory
  hello.sh     # if you put in a directory included in the $PATH

mit echo $PATH Sie können alle Verzeichnisse in Ihrem sehen Pfad . Wählen Sie eine, in der Sie schreiben können (normalerweise ~/bin ) und mv es dort

 mv ~/hello.sh ~/bin  # If /home/bin is in your path 

Anmerkungen

Hastur
quelle
Hinweis für Anfänger: Das Hinzufügen eines Verzeichnisses zu PATH sollte in einfachen Fällen wie dem, nach dem gefragt wird, nicht erforderlich sein. Es ist gut zu wissen, wie man $ PATH ändert, aber es kann Auswirkungen auf die Sicherheit haben mv myscript ~/bin Alles was Sie als Endanwender brauchen.
Wildcard
Ich denke nicht ~/bin ist in $PATH Standardmäßig bei allen größeren Distributionen prüfen, wie sich potenzielle Auswirkungen auf die Sicherheit ergeben.
Daniel B
1
@DanielB ist es auf Ubuntu. ~/binWenn es existiert, wird es standardmäßig zu PATH hinzugefügt ~/.profile.
muru
@Wildcard Daniel B und Muru haben fast die ganze Antwort auf deinen Kommentar gegeben. :) Nicht in allen Fällen ~/bin ist in dem $PATH. Wenn nicht, gebe ich einen Hinweis, wo ich suchen muss. Oft ist es hilfreich, einen anderen Pfad für einen bestimmten Befehlssatz für eine bestimmte Aktivität hinzuzufügen. So können Sie Ihren PATH nur hinzufügen, wenn Sie es brauchen.
Hastur
2

Lass es rein /usr/bin und die Ausführungsberechtigung für alle festlegen. Dann sollten Sie es unabhängig von Ihrem aktuellen Arbeitspfad aufrufen können. Beachten Sie, dass dies funktioniert, weil / usr / bin in Ihrem Verzeichnis aufgeführt ist Umwelt PATH .

sudo cp ~/hello.sh /usr/bin
sudo chmod o+x /usr/bin/hello.sh
Frank Thomas
quelle
4
Ich empfehle dringend, keine alten Skripte in / usr / sbin abzulegen. Legen Sie es in / usr / local / bin oder, wenn es sinnvoll ist, stattdessen / usr / bin. Bitte beachten Sie die FHS als Referenz: Pfadname.com/fhs/pub/fhs-2.3.html
bjanssen
Meinetwegen. Bemerkt
Frank Thomas