Shell-Funktionen können leicht geändert und verwaltet werden. Sie sollten diese zu Ihrem PATH hinzufügen, wenn Sie wissen, dass Sie sie immer brauchen werden (auch wenn es viel seltener ist), als wenn Sie eine temporäre Sache sind. Es ist nicht erforderlich, eine so große RC-Datei zu laden, die Sie ständig hinzufügen, wenn Sie wissen, dass Sie nicht immer alles darin benötigen. Wenn Sie eine große Funktion verwenden, die Sie seltener verwenden, diese jedoch sehr wichtig ist, machen Sie sie von Ihrer PATH
Website aus zugänglich, damit Sie nur dann auf sie zugreifen können, wenn Sie sie benötigen.
Ist eine Shell-Funktion besser als die gleiche Funktion in PATH?
Ich bin etwas verwirrt über die fremde Verwendung von Shell-Funktionen.
Meine Definition einer Shell-Funktion : Eine Funktion, die in .bashrc so ist
.bashrc
--- other default bash configs ---- extract() { // I call this a shell function .... }
Meine Definition einer Funktion in PATH : Eine Datei, deren Ordner sich in PATH befindet. Zum Beispiel haben wir die Datei ~ / bin / screen / convert.screen
Um die Datei und andere Dateien im Ordner meinem PFAD hinzuzufügen, kann ich den folgenden PFAD verwenden
export PATH='/Users/masi/bin/screen:'
Ich würde gerne wissen, wann ich die Funktion als Login-Shell-Funktion und wann zu meinem PFAD stellen sollte. Letzteres ziehe ich im Moment vor, da erstere die Wartungskosten erhöht.
Was ist der Vorteil einer benutzerdefinierten Shell-Funktion, die eine Funktion in PATH nicht hat?
3 Antworten auf die Frage
Es wäre hilfreich, wenn Sie mit der allgemein akzeptierten Beschreibung der Shell-Funktion als eine in einer Datei (Skript) geschriebene Funktion einverstanden wären , die zum Laden in Ihre Shell bereitgestellt und in anderen Scripts und Shell-Befehlen verwendet werden kann .
Wenn wir diese Interpretation des Begriffs verwenden, erleichtern Shell-Funktionen Ihr Leben mit "Funktionen" in Ihren Skripten und Befehlen.
Wenn Sie weiter gehen, können Sie auch in Erwägung ziehen, Ihre weniger häufig verwendeten "Funktionen" in eine separate Datei zu schreiben und diese mit Ihren anderen Skripts zu speichern. Wenn Sie diese benötigen, könnten Sie einfach Quelle das Skript in der Shell.
Ich benutze Shell-Funktionen für Dinge, die recht klein und in sich abgeschlossen sind und die eher Hilfsbefehle für die Shell sind, als für sich selbst volle Programme. Sobald etwas zu einem richtigen Programm wird, schreibe ich es als solches auf und verschiebe es in das bin- Verzeichnis in meinem $HOME
Ordner (der sich bereits in meinem befindet PATH
).
Hier ist ein Beispiel:
# Start mpd (if necessary), search for music using mpc, play music. mp-start() { ps -C mpd > /dev/null || mpd mpc search any $1 | mpc add - mpc play }
Das ist eine Funktion, kein Programm. Es ist sehr wenig dabei und ich werde es nur verwenden, wenn ich bereits in der Shell arbeite.
Ich finde es auch sauberer, alle Funktionen für meine Shell in einer separaten Datei zu speichern ( .bash_functions für mich, aber ich denke, Sie sind ein Z-Shell-Benutzer, passen Sie also entsprechend an), die ich aus der primären RC-Datei meiner Shell bezieht. Ein letzter Tipp: Fügen Sie Ihren Aliasnamen Folgendes hinzu:
alias refunction='vim ~/.bash_functions; source ~/.bash_functions'
So können Sie schnell eine neue Funktion erstellen und nach der Bearbeitung sofort verfügbar machen.
Verwandte Probleme
-
3
Mac OS X: herkömmliche Orte, an denen Binärdateien gespeichert werden sollen
-
2
Warum aktualisiert sich mein Pfad nicht * jetzt *?
-
4
Was ist der längste Dateipfad, den Windows verarbeiten kann?
-
12
PATH-Umgebungsvariable unter Mac OS X und / oder Eclipse
-
1
Microsoft-Wort, das den Startpfadpfad ändert
-
2
Wie erstelle ich eine Terminalverknüpfung, um einen bestimmten Ordner zu öffnen?
-
10
$ PATH in Vim stimmt nicht mit Terminal überein
-
5
Wie finde ich den Pfad der Exe, wenn ich eine App über die cmd-Zeile ausführe?
-
5
Wie kann man einen Symlink in OS X ändern?
-
3
Wie kann ich die maximale Dateipfadgröße in Windows 7 erweitern?