Problem beim Kompilieren

Problem beim Kompilieren

Ich lerne, wie man mit Ihrem kompiliertKompilierenEasyHowToAnleitung. Aber sobald ich den unten gezeigten Befehl im Terminal ausführe, wird der folgende Fehler angezeigt:

tejas@tejas-AU909AA-ACJ-CQ3120IX:~$ sudo chown $tejas /usr/local/src
chown: missing operand after ‘/usr/local/src’

Irgendeine Idee, wie man dieses Problem lösen kann?

Antwort1

Sie müssen es nicht $USERdurch Ihren eigenen Sitzungsanmeldenamen (tejas) ersetzen, da diese Variable bereits „tejas“ enthält.

Der richtige Befehl ist also:

sudo chown $USER /usr/local/src

Die Variablen $ENV, $LOGNAME, $MAIL, $TERM, $USER, und $USERNAMEsind keine integrierten Bash-Elemente. Diese werden jedoch häufig als Umgebungsvariablen in einer der Bash- oder Login-Startdateien festgelegt.

Quelle:http://tldp.org/LDP/abs/html/internalvariables.html

Antwort2

Währenddu musst nichtErsetzen Sie Ihren Benutzernamen manuell durch $USER, wenn Sie möchten. Sie müssen es nur eingebenanstelle vondas ganze "Wort" $USER, nicht nur USER. Das heißt, lassen Sie das $in dem, was Sie schreiben, weg:

sudo chown tejas /usr/local/src

Dies liegt daran, dass $vor einem „Namen“ angegeben wird, dass es sich um den Namen einer Variablen handelt und dass die Variable dereferenziert werden sollte, das heißt, durch den in ihr gespeicherten Wert ersetzt werden sollte. USERist eine Umgebungsvariable, die Ihren Benutzernamen enthält.

Im Gegensatz dazu tejasist (wahrscheinlich) nicht definiert (im Sinne einer Variable, der ein Wert zugewiesen wurde). In einer Shell wird eine nicht definierte Variable in den meisten Fällen so behandelt, als wäre sie leer – d. h. sie enthält die leere (d. h. nulllange) Textzeichenfolge. Daher $tejaswird ersetzt durchNichtsund der Befehl, der tatsächlich ausgeführt wird, ist sudo chown /usr/local/src, was nicht funktionieren kann.

verwandte Informationen