コンパイル中に問題が発生しました

コンパイル中に問題が発生しました

私はあなたのコンパイルの簡単なやり方ガイド。しかし、ターミナルで以下のコマンドを実行するとすぐに、次のエラーが表示されます。

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

この問題を克服する方法はありますか?

答え1

$USERこの変数にはすでに「tejas」が含まれているため、独自のセッション ログイン名 (tejas) に置き換える必要はありません。

したがって、使用する正しいコマンドは次のようになります。

sudo chown $USER /usr/local/src

変数$ENV$LOGNAME$MAIL$TERM$USER$USERNAMEBash の組み込み変数ではありません。ただし、これらは多くの場合、Bash またはログイン起動ファイルのいずれかで環境変数として設定されます。

ソース:http://tldp.org/LDP/abs/html/内部変数.html

答え2

その間そうする必要はないを手動でユーザー名に置き換えること$USERもできます。代わりに全体「単語」 であり$USER、 だけではありませんUSER。つまり、$次のように書くときには を省略します。

sudo chown tejas /usr/local/src

これは、$「名前」の前にあるのは、それが変数の名前であり、その変数が参照解除される必要がある、つまり、そこに格納されている値に置き換えられる必要があることを意味するためです。は、USERユーザー名を保持する環境変数です。

対照的に、tejasは(おそらく)定義されていません(何らかの値が割り当てられた変数という意味で)。シェルでは、定義されていない変数は、ほとんどの場合、空であるかのように扱われます。つまり、空の(つまり長さがゼロの)テキスト文字列を保持します。したがって、は次$tejasのように置き換えられます。何もない実際に実行されるコマンドは ですがsudo chown /usr/local/src、これは機能しません。

関連情報