Alias ​​vs Export für einfache Befehle

33

Ist lesses für einfache Befehle wie besser, einen Alias ​​zu erstellen oder die Optionen zu exportieren? Gibt es einen Vorteil gegenüber dem anderen?

Wenn ich lesszum Beispiel immer die -ROption zum Anzeigen von unformatierten Zeichen verwenden möchte , funktionieren beide Lösungen:

  1. export LESS='-R'
  2. alias less='less -R'

Gibt es für einen einfachen Fall wie diesen einen Vorteil gegenüber dem anderen? Gibt es Szenarien, in denen eines Probleme verursacht und das andere nicht?

Ich habe durch einige lesen infound manSeiten sowie googeln, aber ich bin auf diese immer noch fest.

Kegeln
quelle
1
Nein, es kommt wirklich auf die persönlichen Vorlieben an. Ich habe dafür gestimmt, dies zu schließen, da es eher auf Meinungen basiert.
SLM
Drei weitere Lösungen: Erstellen einer Shell-Funktion (funktioniert nur in der Shell, muss aber nicht interaktiv sein); Erstellen Sie ein Skript in ~ / bin oder wo auch immer (hat einen höheren Startaufwand für die Shell, funktioniert jedoch sofort bei der Ausführung von Shells und anderen Programmen und ist dauerhaft). Programm-spezifische Konfigurationsdateien (für lessSie können es mit lesskey)
DeltaB
3
@slm Es ist nicht meinungsbasiert oder sollte es zumindest nicht sein. Insbesondere in einem komplexeren Szenario kann ein höherer Aufwand erforderlich sein und unnötig Ressourcen verbrauchen. Konventionell könnte man in der * nix-Welt korrekter sein, oder vielleicht gibt es sogar irgendwo einen formalen Standard. Programmierer ärgern sich immer wieder über "schlampiges Codieren", auch wenn es in jeder Hinsicht das gleiche Ziel erreicht.
Skittleys

Antworten:

30

Ein Unterschied zwischen den beiden besteht darin, dass Aliase nur ein Shell-Feature sind. Umgebungsvariablen werden von allen Unterprozessen geerbt (sofern nicht absichtlich gelöscht).

Die Umgebungsvariable wäre eher zu arbeiten , auch wenn lessindirekt gestartet wird, wie über eine andere Shell (zB tcsh), man, vim, psql, usw.

200_erfolg
quelle
3
Insbesondere funktionieren Aliase nur in interaktiven Shells: Sie können sie nicht in Shellskripten verwenden, die Sie manchmal benötigen. bash -c 'alias ll="ls -l"; ll'Der Alias ​​wird nicht verwendet.
Deltab
ah, das wusste ich nicht! Wenn ich also export LESS='-R'in meinem .zshrc eine zsh-Sitzung öffne und dann in derselben Sitzung zu bash wechsle (ohne Export in .bashrc), wird die Umgebungsvariable trotzdem gesetzt? Ich hätte gedacht, beide wären verloren ...
skittleys
@deltab ah, ja, ich weiß über diese Unterscheidung dank greps Farbproblemen Bescheid. Vielen Dank für den Hinweis.
skittleys
1

Dies hängt stark vom verwendeten Tool ab. Es wird Tools geben, mit denen Sie eines von beiden verwenden können, andere, die nur eines zulassen.

Es gibt Befehle, die von anderen aufgerufen werden und die Umgebungsvariablen lesen und dieselben Schalter akzeptieren, aber das Hinzufügen derselben Schalter zu jedem einzelnen ist mühsam, so wie Compiler, da makehier Umgebungsvariablen leuchten. Sie setzen die Variable und vergessen sie. Es ist auch ein Vorteil, dass es zeitlich begrenzt sein und für einen einzelnen Befehl funktionieren kann.

Unterm Strich ist es eine Frage der Präferenzen und der besten Vorgehensweise für die Aufgabe. Manchmal ist das Einrichten eines Alias ​​einfacher und dauerhafter als bei einer Umgebungsvariablen, und manchmal benötigen Sie eine Reihe von Tools, die sich genauso verhalten, wie Sie es würden Umgebungsvariablen lieben.

Braiam
quelle