bash拡張を使用せずに現在のユーザーのホームディレクトリへの絶対パス?

bash拡張を使用せずに現在のユーザーのホームディレクトリへの絶対パス?

これは時々提起される質問であり、本当に私を迷惑させます。

場合によっては、現在のユーザーのホームディレクトリを参照する必要がある設定ファイルへの絶対パスを提供する必要がありますが、設定ファイルは bash のチルダまたは変数の拡張を理解していません(したがって~/foobar$HOME/foobarおよび/home/$USER/foobar除外されます)。

/proc私の理想的な解決策は、常に現在のユーザーのホームディレクトリに展開されている「アクティブ」シンボリックリンクまたはそれに似たものがある場合です。たとえば、/proc/self値がアクセスするプロセスに依存するシンボリックリンクです。常に現在のユーザーのホームディレクトリを参照する同様のリンクはありますか?

この状況は、組織内の他の人と共有したり、複数のコンピュータで自分と共有したりするために再利用可能な設定を作成したときに発生します(自分のユーザー名はコンピュータによって異なる場合があります)。また、構成ファイルを再配置可能にするのに障害が発生する可能性があります。たとえば、理想的には、私のTarballを作成し、$HOMEそれを他のユーザーの$HOMETarballに抽出すると、すぐに他のユーザーに対して私と同じ環境が設定されますが、私のすべてのシンボリックリンクおよび/または設定ファイルがハードコードされている場合、/home/cdfh/...当然動作しません。 。 。

すべての場合に常に回避策がありますが、参照できる場合は$HOME非常に/proc/home便利です。

だから何年も不満足な解決策を試した後、次のように尋ねたいと思います。この問題を経験した人はいますか?どの解決策を見つけましたか?解決策はありますか?

編集する:

私のプラットフォームはLinuxですが、すべてのUnix派生システムに代わってこの質問をしたいと思います。

「アクティブ」アプローチについては、これら 質問関連性があり、結果は私が使用しますスクリプトファイルシステムファイルを読み取るときにファイルのデータを読み取らずに、標準出力がファイルのデータを置き換えるプロセスを実行するファイルシステムを作成します。したがって、プロセスはユーザーのホームディレクトリを読み取るためのシンボリックリンクとして機能するデータを出力します。悲しいことに、私はまだこれを達成する機会がありませんでした。

私が今理解している正しい用語を使って質問を変えて、次のようにしたいと思います。変数シンボリックリンクHOME環境変数に基づいてリンクを作成します。残念ながら、Linuxはデフォルトでは可変シンボリックリンクをサポートしていませんが、上記のFUSEベースの方法を使用してこれを達成できます。奇妙なことに、はいさまざまなBSDがサポートされています。一部Linuxのサポートが進められています。

ベストアンサー1

おすすめ記事