アプリケーションが自分の設定をポータブルに保存/ロードするように、スクリプト内のローカルでユーザーのホームポジションをオーバーライドしたいと思います。
export HOME=$TMPDIR/Data
export XDG_CONFIG_HOME=$TMPDIR/Data
これはほとんどの場合うまくいきますが、まだ「実際の」デフォルトパスを見つけることができるいくつかのアプリケーションがあります。
ユーザーの自宅の場所をオーバーライドする方法が機能しないのはなぜですか?
ベストアンサー1
残念ながら、これはあなたのアプリケーションが何であるかによって大きく異なります。アプリケーションはさまざまな方法でユーザーのホームディレクトリを表示できます。
$HOME
あなたはすでにこれを知っています。
$HOME
ログイン構成でオーバーライドできる環境変数。たとえば、ファイル.bashrc
または.bash_profile
Bash 環境のファイルです。値は通常/home/username
。/home/$USER
私はこれがのバリエーションだと思いますが、ユーザーのホームディレクトリが下にある必要があると愚かであると仮定して、その変数を追加して使用するいくつかの
$HOME
アプリケーションに会いました。/home
$USER
分析する
/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データベースなど何でもよい。GTK&
g_get_home_dir()
GTKライブラリは
g_get_home_dir()
。$HOME
から抜粋GLibリファレンスマニュアル
従来のUnixツールと比較して、この機能はHOME環境変数のpasswdエントリを好みます。
ケード
KDEは$ HOMEを使用しているようです。最初に見て、設定されていない場合
KDEHOME
に戻ります。$HOME/.kde
名前が示すように、このディレクトリツリーは通常ユーザーのホームディレクトリにあります。この環境変数が定義されていない場合は、デフォルトの場所$ HOME / .kde4が使用されます。