家の場所をオーバーライド

家の場所をオーバーライド

アプリケーションが自分の設定をポータブルに保存/ロードするように、スクリプト内のローカルでユーザーのホームポジションをオーバーライドしたいと思います。

export HOME=$TMPDIR/Data
export XDG_CONFIG_HOME=$TMPDIR/Data

これはほとんどの場合うまくいきますが、まだ「実際の」デフォルトパスを見つけることができるいくつかのアプリケーションがあります。

ユーザーの自宅の場所をオーバーライドする方法が機能しないのはなぜですか?

ベストアンサー1

残念ながら、これはあなたのアプリケーションが何であるかによって大きく異なります。アプリケーションはさまざまな方法でユーザーのホームディレクトリを表示できます。

  1. $HOME

    あなたはすでにこれを知っています。$HOMEログイン構成でオーバーライドできる環境変数。たとえば、ファイル.bashrcまたは.bash_profileBash 環境のファイルです。値は通常/home/username

  2. /home/$USER

    私はこれがのバリエーションだと思いますが、ユーザーのホームディレクトリが下にある必要があると愚かであると仮定して、その変数を追加して使用するいくつかの$HOMEアプリケーションに会いました。/home$USER

  3. 分析する/etc/passwd

    これは、ユーザーのホームディレクトリを取得する最悪の方法という点で、おそらく最悪の犯罪者でしょう。ただし、多くのツールとスクリプトがこれを行います。ほとんどは、彼らが使用している場所でこれの変形です。getent注文する:

    $ getent passwd | grep $1 | awk -F: '{ print $6 }'
    
    # for example (user "saml")
    $ getent passwd | grep saml | awk -F: '{ print $6 }'
    /home/saml
    

    ユーザ情報を格納するバックエンド「データベース」は、/etc/passwdファイル、NIS、LDAPデータベースなど何でもよい。

  4. GTK&g_get_home_dir()

    GTKライブラリはg_get_home_dir()$HOME

    から抜粋GLibリファレンスマニュアル

    従来のUnixツールと比較して、この機能はHOME環境変数のpasswdエントリを好みます。

  5. ケード

    KDEは$ HOMEを使用しているようです。最初に見て、設定されていない場合KDEHOME に戻ります。$HOME/.kde

    抜粋KDEシステム管理/ KDEファイルシステム層

    名前が示すように、このディレクトリツリーは通常ユーザーのホームディレクトリにあります。この環境変数が定義されていない場合は、デフォルトの場所$ HOME / .kde4が使用されます。

おすすめ記事