Ich arbeite mit Mac OS 10.6 und versuche, ein oder zwei Dinge über Shell-Skripte 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 davon, in welchem Ordner ich mich befinde).
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 / Users / username / Downloads navigiere, kann ich das Skript nicht ausführen.
Außerdem sind Vorschläge für Ressourcen hilfreich, um mehr über Shell-Skripte zu erfahren. Vielen Dank
PATH
Umgebungsvariable und aktualisieren Sie dann die Frage.Antworten:
/usr/local/bin
wäre der am besten geeignete Ort. Mac OS X hat esPATH
standardmäßig in derquelle
Traditionell gehen solche Skripte entweder ein
~/bin
(dh das bin-Verzeichnis in Ihrem Home-Verzeichnis) oder/usr/local/bin/
das erstere bedeutet, dass das Skript nur für Sie funktioniert, das letztere für Skripte, die jeder auf dem System ausführen kann.Wenn Sie es eingeben
~/bin
, müssen Sie es möglicherweise zu Ihrer Umgebungsvariablen PATH hinzufügen./usr/local/bin
sollte schon auf dem Weg sein.quelle
Es gibt zwei Möglichkeiten, dies zu tun -
** HINWEIS : Wenn Sie das Skript mit einem verkürzten Befehl ausführen möchten, anstatt Ihren gesamten Dateinamen einzugeben, fügen Sie Ihrem .bash_profile Folgendes hinzu:
alias myscript='my_script.sh'
Anschließend können Sie das Skript durch einfaches Eingeben ausführen
myscript
. (Sie können einen beliebigen Alias eingeben)quelle
Im Mac-Betriebssystem
quelle
.bash_profile
? Es ist viel einfacher (und diese Quelle .bashrc hat bei mir nie funktioniert).Dieser ist super einfach, wenn Sie mit Ihrer bashrc-Datei vertraut sind! Dies verwendet ausschließlich Ihre .bashrc-Datei und dauert 2 Sekunden.
(Ich verwende 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 können, verwenden Sie zuerst den einfachen Befehl 'cd' und geben ihm das Verzeichnis des Speicherorts des Skripts an. Verwenden Sie dann '&&', damit Sie den nächsten Befehl direkt danach ausführen und schließlich Ihr Skript so öffnen können, wie Sie es möchten normalerweise! Super einfach und direkt in Ihrer .bash-Datei gespeichert! :) :)
Hoffe ich habe jemandem geholfen!
Mit freundlichen Grüßen,
AnonymousX
quelle
Wenn Sie die Bash-Shell verwenden, schreiben Sie dieses Skript als Funktion und legen Sie es dann in der .bashrc-Datei ab oder geben Sie die Datei, die diese Funktion enthält, unter "Quelldateiname" an.
Führen Sie nun das Skript per Funktionsaufruf in der Shell aus.
quelle
Wenn Sie es entweder in
/usr/bin
einem anderen Verzeichnis speichern (oder in einem anderen vorhandenen VerzeichnisPATH
) oder es bearbeitenPATH
, um das Verzeichnis einzuschließen, in dem Sie es gespeichert haben, wird es grundsätzlich in einem beliebigen Verzeichnis ausgeführt.quelle
/usr/bin
kann während eines Betriebssystem-Upgrades vollständig geleert und ersetzt werden, wodurch Ihr Skript auf mysteriöse Weise verschwindet./usr/local/bin
ist für diesen Zweck, wie von Bryan Oakley erwähnt. Siehe auch den Dateisystem-Hierarchie-Standardaus dem Arbeitsverzeichnis von 'script.sh' "mv [script.sh] / usr / local / bin" (nicht getestet, scheint aber der am wenigsten komplexe Weg zu sein, IMO.)
quelle
sudo mv script.sh /usr/local/bin
, da dieses Verzeichnis ohne eskalierende Berechtigungen nicht beschreibbar ist.Sie sollten es in das globale ausführbare Verzeichnis auf Ihrem Computer ablegen. Ich denke, dass dies normalerweise
/usr/bin
auf Unix-basierten Betriebssystemen der Fall ist (dies erfordert jedoch meistens Superuser-Berechtigungen auf diesem Computer).Sie können es auch in ein anderes Verzeichnis in der
$PATH
Umgebungsvariablen einfügen, obwohl es nur für Benutzer funktioniert, die dieses Verzeichnis in dieser Variablen haben.Sie können den Wert von ermitteln,
$PATH
indem Sieecho $PATH
eine Shell eingeben . Die Verzeichnisse sind durch getrennt:
.quelle