共通ユーザー名を変数として取得する方法

共通ユーザー名を変数として取得する方法

メイクファイルスクリプトを作成し、特定のディレクトリに複数のフォルダを自動的に作成しようとしています。しかし、これを実装しようとしたときに問題が発生しました。まず、一般的な道をたどりました。

mkdir ~/Documents/testfolder

ただし、次のエラーが発生します。 mkdir: cannot create directory '/root/Documents/testfolder': No such file or directory

$USER次に、次のように変数を使用しようとします。

mkdir /home/$USER/Documents/testfolder

ただし、登録すると/home/root/Documents/...エラーが発生します。 Makefileスクリプトは主にsudoで実行する必要があるため、これは私にとって大きな問題です。助けが必要ですか?

答え1

シェル環境に対応する項目がある場合は、すべての環境変数がインポートされたため、$USER正しく機能する必要があります。ただし、実際に現在のユーザーIDを反映していることにmake注意する必要があります。$USER

ただし、Makefileの内部には、シェルスクリプトの内部ルールに加えて他のルールがあります。次のmakefileを使用してこれを確認できます。

all:
        echo USER: $(USER)

これはうまくいきます。make単一文字より長いマクロ名を生成するには$(...)が必要です。それ以外の場合は$U拡張されるため、括弧が必要です。

今、あなたの権限について話しましょう。シェル変数を変更せずにユーザーIDを変更するために、suまたは同じプログラムを使用したようです。sudo$USER

実行したいユーザーとして直接ログインしてみてくださいmake

関連情報