2016-04-13 17 views
0

Ich habe eine Reihe von Shell-Skripten, von denen die erste die beliebte Fish-Shell installiert. Sobald dieser Schritt abgeschlossen ist, kopiere ich ein Verzeichnis functions/ an den entsprechenden Speicherort. Ich möchte dann die Funktion spin verwenden, um jedes Shell-Skript aufzurufen und einen Spinner anzuzeigen, während jedes Skript ausgeführt wird. Jedoch, nachdem ich die anfängliche Installation von Fisch und Konfiguration passiert habe, bin ich nicht in der Lage, die Funktionen zu verwenden, d. H. spin <command> Ergebnisse in command not found.Verwenden der Funktion "Fischschale" innerhalb eines Skripts

HINWEIS Dies geschieht in einem kurzlebigen Andock-Container zum Testen.

Alle Hinweise oder Hilfe mit diesem würde sehr geschätzt werden.

+0

Nicht vertraut mit Fisch, aber Shell-Funktionen sind normalerweise nicht in nicht interaktiven Schalen verfügbar. Eine einfache und unkomplizierte Problemumgehung besteht darin, die Implementierung von einer Funktion in einen regulären externen Befehl zu ändern. – tripleee

+0

@tripleee Funktionen sind in nicht interaktiven Shells verfügbar, obwohl die Dateien, die sie definieren, von diesen Shells möglicherweise nicht geladen werden. Aliase sind in nicht-interaktiven Shells oft nicht verfügbar. –

+0

Für Fische sollte das eigentlich funktionieren, da es immer die gleichen Dateien erzeugt. Das ist, es sei denn, Sie haben es ausdrücklich mit "if status --is-interactive" geschützt. Ist das Funktionenverzeichnis in Ihrem $ fish_function_path? – faho

Antwort

3

Wenn Sie Fischfunktionen von außen ausführen möchten, verwenden Sie fish -c mit einer Fischbefehlszeile als eine Zeichenfolge.

Zum Beispiel dies nicht gelingt:

env __fish_pwd 

Aber das funktioniert:

env fish -c __fish_pwd 

Dies liegt daran, env läuft ausführbare Dateien, nicht Fisch Funktionen. Ich nehme an, spin ist auch so.

+0

Danke dafür, es scheint mit allem außer Spin zu funktionieren, der vom Fischer-Plugin-Manager kommt, vielleicht gibt es dort ein Problem. Funktionen in diesem Verzeichnis sind in der Tat von Bash mit der beschriebenen Technik verfügbar. Dank dafür. Irgendwelche Informationen oder Ressourcen für 'env', die ausführbare Dateien ausführen? Ich sehe '#!/Usr/bin/env ' viel in Skripten, ich denke, deshalb. – MindVox

+0

'Fisch -c' funktioniert gut für mich, danke. –

Verwandte Themen