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