Bash Befehl: Was ist der Unterschied zwischen einer Variablen und einem Alias?

8

Ich bin neu in Linux und von den Grundlagen ausgehend.

- Ich dachte, dass Alias ​​verwendet wird, um eine Verknüpfung zu einem Befehl zu machen. Aber ich habe folgendes mit einer Variablen versucht (in Ubuntu) und funktioniert immer noch!

%Vor%

unter Verwendung von Alias:

%Vor%

Soll das so funktionieren? Vielen Dank für die Antworten:)

    
Rei 08.09.2011, 03:12
quelle

5 Antworten

11

Variablen sind vielseitiger als Aliase. Variablen können irgendwo in einer Befehlszeile (z. B. als Teile von Programmargumenten) verwendet werden, wohingegen Aliase nur als die Namen von Programmen verwendet werden können, die ausgeführt werden sollen, d. H. Als das erste Wort in einer Befehlszeile. Zum Beispiel:

%Vor%

Variablen können auch in die Umgebung von untergeordneten Prozessen exportiert werden. Wenn Sie die export builtin verwenden, um Variablen zu exportieren, dann Programme kann die Funktion getenv(3) verwenden, um die Werte der Variablen zu erhalten.

Im Bash-Handbuch finden Sie eine vollständige Beschreibung aller verschiedenen Funktionen Arten von Erweiterungen, die es ausführen kann und wie es sie ausführt. Siehe auch den Abschnitt zu Aliasen .

    
Adam Rosenfield 08.09.2011, 03:19
quelle
1

Beachten Sie, dass wenn Sie den Alias ​​eingeben, als ob es ein Befehl wäre, geben Sie nicht $ ; Wenn Sie eine Variable eingeben, müssen Sie sie einschließen. Aliases agieren also natürlicher als alternativer Name für einen Befehl.

    
Ernest Friedman-Hill 08.09.2011 03:15
quelle
1

In der Variablenform wird es erweitert und ausgewertet.

Daher

%Vor%

wird zu

erweitert %Vor%

was ausgewertet werden kann. Es ist die gleiche Art von Erweiterung wie wenn foo ein Argument wäre:

%Vor%

Bei Aliasen verweisen Sie direkt auf sie, indem Sie den Namen (kein $) verwenden, und sie wird nur erweitert, wenn es sich um das erste Wort handelt.

    
Foo Bah 08.09.2011 03:16
quelle
1

"Variablen sind vielseitiger als Aliase" - nicht ganz richtig!

Für die Ausführung von Befehlen haben Variablen einige Einschränkungen, die von Aliasen nicht gemeinsam genutzt werden.

Verwenden Sie eine Variable, um einen Befehl zu definieren, der ein einzelnes Sternchen an die Befehlszeile zurückgibt:

%Vor%

Der * ist erweitert - was Sie nicht wollten - versuchen Sie es dann:

%Vor%

Aber jetzt haben Sie extra Anführungszeichen - das wollten Sie auch nicht!

Aber das funktioniert OK:

%Vor%

Und das tut es auch:

%Vor%

Dies liegt daran, dass Anführungszeichen innerhalb einer Variablen als literal und nicht als syntaktisch behandelt werden, wenn eine Variable erweitert wird - in diesem Fall werden sie Teil des Parameters, der an den Befehl echo übergeben wird, während der Befehl mit einem Alias ​​ausgeführt wird "wie es ist" und die Anführungszeichen werden als syntaktisch behandelt und vor dem Aufruf von echo syntaktisch analysiert, genau so, wie wenn Sie denselben Befehl direkt von der Befehlszeile aus eingeben.

    
Dan King 26.02.2015 15:42
quelle
0

Variablen ersetzen ihren Inhalt wo immer sie verwendet werden.

%Vor%

Aliase fungieren als tatsächliche Befehle oder besser als das Präfix eins.

%Vor%     
Ignacio Vazquez-Abrams 08.09.2011 03:18
quelle

Tags und Links