
.debインストーラを作成していますが、ユーザーのホームディレクトリにいくつかのファイルを保存したいのですが、ユーザー名をハードコードできません。ファイルやフォルダを配置できるファイルシステムの他の場所やフォルダをそこに配置する方法を知っている人はいますか?これを行うためにpostinstスクリプトを使用したくありません。
答え1
パッケージと共にホームディレクトリにファイルをインストールしないでください。
/etc/skel
代わりに、パッケージのインストール後に作成された新しいユーザーが新しく作成されたホームディレクトリにこれらのファイルをコピーするようにデフォルトの設定ファイルをインストールできます。ただし、既存のユーザーはこれらの新しいファイルを取得できません。アプリケーションが初めて実行されると、ユーザーのホームディレクトリに構成ファイルを作成できます。
全員(または特定の人)のホームディレクトリにファイルを追加したい場合は、実際に欲しいもの構成管理システム。パッケージのインストールは間違ったアプローチです。
答え2
~
は、ユーザーが所有するユーザー名のユーザーフォルダーを表します。
しかし、代わりに使用することをお勧めします。/tmp
使用する理由はありません~
。
答え3
rootユーザーとして実行する必要があるdebパッケージをインストールします。 (で説明)を
使ってSUDO_USER
万水道)
したがって、正しいユーザーのホームディレクトリを取得するには、次のようにします。
USER_HOME_DIR=$(getent passwd $SUDO_USER | cut -d: -f6)
echo "User Home Dir: $USER_HOME_DIR"
端末でテストしてみてください。
sudo bash -c 'echo $(getent passwd $SUDO_USER | cut -d: -f6)'