2

root として bash を実行していて、ユーザーのホーム ディレクトリを chown したいとしますadaadaという変数に格納されているとも言います$USER(これはスクリプトから実行しているためです)。

以下を試したところ、

chown -R $USER:$USER ~$USER

/home/root/adaシェルは最初にチルダ展開を実行したため、 ではなくchown を試みました/home/ada

ネストされた置換と適切なエスケープでそれを行う方法はありますか?

4

2 に答える 2

3

チルダ展開はトリッキーで、そのような変数では機能しません。

1 つの方法は、次を使用することevalです。

chown -R $USER:$USER $(eval echo ~"$USER")

ただし、USER変数が信頼できないソースからのものではないことを確認してください。

于 2015-02-25T22:03:22.297 に答える