2016-07-02 8 views
1

In NixOS, Definitionen von Shell-Aliase können wie so in der configurations.nix Datei definiert werden:Make-Shell-Aliase deklarativ auf Pakete hängt

environment.shellAliases = { 
    "my_some_cmd" = "some_cmd -flag 123"; 
} 

Dieser selbst zugewiesen wird, wenn der genannte Befehl (hier: some_cmd) ist nicht im System verfügbar. Angenommen, dieser Befehl ist in einem Paket enthalten. Es wäre also wünschenswert zu erklären, dass der Alias ​​nur zugewiesen werden sollte, wenn das Paket installiert ist.

Wie könnte das getan werden? Müsste ich nur mit einer Wrapping-if-Anweisung arbeiten oder gibt es andere Möglichkeiten, dies zu archivieren?

Wenn die if-Anweisung der richtige Weg ist, wie könnte das implementiert werden?

+0

Schreiben eine Shell-Funktion, die Alias-Erstellung, wenn einiger verwandter Befehl automatisiert ist nicht im Weg gefunden, und benutze es immer und immer und immer wieder. – alexis

+0

wäre das eine triviale Sache? Ich meine, wie man erkennt, ob ein Wort ein Befehl oder ein Parameter ist. zB: 'alias my = "cmd a_datei $ (echo xyz)"'. Wie auch immer, ich bin nicht so sehr mit Bash Scripting beschäftigt, also vermisse ich vielleicht etw. –

+0

Entweder der Aliasname und der Befehlsname sind identisch, oder Sie müssen ihm mitteilen, welche Existenz zu prüfen ist. – alexis

Antwort

0

können Sie die Notwendigkeit umgehen, das Paket unter Verwendung des vollständigen Pfades zu dem Befehl, Beispiel zu installieren:

environment.shellAliases = { 
    "colored-tree" = "${pkgs.tree}/bin/tree -C"; 
}; 
+0

das sieht nach einer sehr guten Lösung aus! –