编译期间的问题

我正在学习如何使用CompilingEasyHowTo指南进行编译 。 但是一旦我在终端中运行下面显示的命令,它就会显示以下错误:

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

知道如何克服这个问题吗?

您不需要用您自己的会话登录名(tejas)替换$USER ,因为此变量已包含“tejas”。

所以使用的正确命令是:

 sudo chown $USER /usr/local/src 

变量$ENV$LOGNAME$MAIL$TERM$USER$USERNAME不是Bash内置函数。 但是,这些通常在其中一个Bash或登录启动文件中设置为环境变量。

资料来源: http : //tldp.org/LDP/abs/html/internalvariables.html

虽然您不必手动将用户名替换为$USER ,但如果您愿意,也可以。 你只需要用它代替整个“单词” $USER ,而不仅仅是USER 。 也就是说,在你写的内容中留下$

 sudo chown tejas /usr/local/src 

这是因为在“名称”之前的$表示它是变量的名称,并且该变量应该被取消引用 – 也就是说,由存储在其中的值替换。 USER是一个保存用户名的环境变量。

相反, tejas (可能)没有被定义(在被赋予某个值的变量的意义上)。 在shell中,在大多数情况下,处理未定义的变量,就像它是空的 – 即,保持空(即,零长度)文本串。 所以$tejas被替换为什么,实际运行的命令是sudo chown /usr/local/src ,这是行不通的。