Grundlagen von Linux und der Kommandozeile
$ X=1
$ bash -c 'echo "[$X]"'
$ export X
$ bash -c 'echo "[$X]"'Welche Kombination der Ausgaben der beiden bash -c-Befehle ergibt sich, wenn die obigen Befehle nacheinander ausgeführt werden?
- A[] und [1]
- B[1] und [1]
- C[] und []
Antwort und Erläuterung anzeigen
Antwort: A. [] und [1]
Eine Variable, der wie in „X=1“ nur ein Wert zugewiesen wurde, ist eine Shell-Variable: Sie ist nur innerhalb dieser Shell nutzbar und wird nicht an von ihr gestartete Kindprozesse (hier eine neue bash) weitergegeben. Mit export wird sie zur Umgebungsvariable, und ihr Wert wird an danach gestartete Kindprozesse vererbt. Die erste Ausgabe ist daher [], die zweite [1]. Wegen der einfachen Anführungszeichen wird $X nicht in der übergeordneten Shell, sondern in der Kind-bash expandiert.
Weiter: 9 weitere Fragen zu Grundlagen von Linux und der Kommandozeile