webentwicklung-frage-antwort-db.com.de

Wie kann man ein Shell-Skript global machen?

Ich arbeite unter Mac OS 10.6 und versuche, ein paar Dinge über Shell-Scripting zu lernen. Ich verstehe, wie man ein Shell-Skript speichert und ausführbar macht, aber ich frage mich, was ich tun kann oder wo ich die Datei speichern kann, um sie global zu machen (dh, unabhängig von dem Ordner, in dem ich bin).

Wenn ich beispielsweise eine .sh-Datei im Verzeichnis/Users/username/speichere und ausführbar mache, kann ich dieses Skript nur in diesem bestimmten Verzeichnis ausführen. Wenn ich beispielsweise zu/Benutzer/Benutzername/Downloads navigiere, kann ich das Skript nicht ausführen.

Alle Vorschläge für Ressourcen, um mehr über Shell-Scripting zu erfahren, wären hilfreich. Vielen Dank

56
zebraman

/usr/local/bin wäre der am besten geeignete Ort. Mac OS X hat es standardmäßig in der PATH

102
unbeli

Üblicherweise werden solche Skripts entweder in ~/bin (dh das bin-Verzeichnis in Ihrem Home-Verzeichnis) oder in /usr/local/bin/ abgelegt. Erstere bedeutet, dass das Skript nur für Sie funktioniert. Letzteres ist für Skripts, die jeder Benutzer des Systems ausführen kann.

Wenn Sie es in ~/bin eingeben, müssen Sie dies möglicherweise Ihrer Umgebungsvariable PATH hinzufügen. /usr/local/bin sollte bereits im Pfad enthalten sein.

33
Bryan Oakley

Es gibt zwei Möglichkeiten, dies zu tun -

  1. Legen Sie Ihr Skript in usr/local/bin ab und stellen Sie sicher, dass es ausführbar ist (chmod + x my_script).
  2. Erstellen Sie in Ihrem Ausgangsverzeichnis einen Ordner mit dem Namen bin. (Für Ihre persönlichen Skripte)
    • cd ~ (bringt Sie zu Ihrem Heimatverzeichnis)
    • mkdir bin (einen bin-Ordner erstellen)
    • vim .bash_profile (zum Festlegen der Pfadumgebungsvariablen)
    • export PATH = ~/bin: $ PATH (Drücke ich, füge dann diese Zeile hinzu und mache esc und tippe: wq)
    • Jetzt können Sie einfach den Namen Ihres Skripts eingeben und von überall aus ausführen.
13
Piqué

Wenn Sie die bash-Shell verwenden, schreiben Sie dieses Skript als Funktion und stellen Sie es in die .bashrc-Datei ein, oder geben Sie die Datei, die diese Funktion enthält, durch "source file_name" an.

Führen Sie nun das Skript per Funktionsaufruf in der Shell aus.

In einem Mac-Betriebssystem

  • Öffnen Sie die Datei bash ~/.bashrc.
  • fügen Sie den Pfad Ihres Skripts in Ihrer bashrc-Datei hinzu. Verwenden Sie export PATH = "$ PATH: /Users/sher.mohammad/Office/practice/practiceShell"
  • Öffnen Sie die Datei ~./Bash_profile und fügen Sie [[-s ~/.bashrc]] && source ~/.bashrc hinzu.
  • neues Terminalfenster öffnen. Wenn Sie Ihr Terminal öffnen, wird Ihr Skript geladen
2
Sher Mohammad

Diese ist sehr einfach, wenn Sie mit Ihrer bashrc-Datei vertraut sind! Dies wird nur Ihre .bashrc-Datei verwenden und dauert nur zwei Sekunden.

(Ich benutze Arch Linux Manjaro, also verwende ich .bashrc in meinem Home-Verzeichnis.)

Der Code, der in Ihre .bashrc-Datei eingefügt werden soll:

# Simple bashrc method to launch anything in terminal from any directory

YOURCOMMAND () {
  cd /path/to/directory/containing/your/script/ && ./YOURSCRIPT
}

Wie Sie sehen, verwenden Sie zunächst den einfachen Befehl 'cd' und geben Sie ihm das Verzeichnis des Scripts-Verzeichnisses. Dann verwenden Sie '&&', damit Sie den nächsten Befehl direkt ausführen können, und schließlich Ihr Skript wie gewohnt öffnen normalerweise! Super einfach und direkt in Ihrer .bash-Datei gespeichert! :)

Hoffe ich habe jemandem geholfen!

Mit freundlichen Grüßen,

AnonymousX

2
AnonymousX

Wenn Sie es entweder in /usr/bin (oder einem anderen Verzeichnis in PATH) speichern oder PATH bearbeiten, um das Verzeichnis, in dem Sie es gespeichert haben, aufzunehmen, wird es grundsätzlich in einem beliebigen Verzeichnis ausgeführt.

1
You

aus dem Arbeitsverzeichnis von 'script.sh' "mv [script.sh]/usr/local/bin" (nicht getestet, scheint aber der am wenigsten komplexe Weg zu sein, IMO.)

0
d1gl3r