Linuxで「union」シンボリックリンクを使用できますか?これが実際の用語であるかどうかはわからないので、概念を説明します。
を含むgitリポジトリがあります~/dotfiles
。ディレクトリへのシンボリックリンクを使用して「アクティブ化」します。たとえば、次のコマンドln -s ~/dotfiles/bash/bash_profile ~/.bash_profile
を実行してリンクを作成します。
~/.bash_profile -> ~/dotfiles/bash/bash_profile
ところで、複数のファイルの内容をマージしたい状況が生じました。たとえば、~/.bash_profile
シンボリックリンクが各ファイルに1つずつ2つの別々のファイルを指すようにしたいとします。たとえば、
~/.bash_profile
(1) -> ~/dotfiles/bash/bash_profile
(2) -> ~/dotfiles/proj/bash_profile
2つのファイル(たとえばcat ~/dotfiles/{bash,proj}/bash_profile > ~/.bash_profile
)を簡単にリンクできることはわかっていますが、シンボリックリンクを使用して同じことができる場合は、そうすることをお勧めします。
そのような機能が存在する場合(Nixはかなり大きい)、後ろから2つの異なるファイルを一緒にマッピングする必要があり、後ろからさまざまな複雑さを隠す必要があると想像します(最初の「マッピング」されていないすべてのファイルマッピング)、ファイルの移動、リンクされたシンボリックリンクの書き込みときにすべてのファイルロックなど)。
そのような機能がない場合は、実装する予定はありますか?
ベストアンサー1
シンボリックリンクは、「このファイルを他の場所で見つけてください」と言います。シンボリックリンクの内容はターゲットの内容と同じです。いいえ、シンボリックリンクはそうすることはできません。私はシンボリックリンクに関連する機能を見つけようとしないことをお勧めします。それはあなたが望むものではないからです。 「シンボリックリンク接続」という言葉で何が欲しいのかわかりません。
ファイルの内容が複数のファイルの内容を結合した結果になりたいです。これは、システムの一部が組み合わせを実行できる必要があり、必要な組み合わせの種類を説明する必要があることを意味します(私が正しく理解した場合は接続)。
最新のUNIXシステムには、どのような保存方法に関係なく、任意のデータをファイルとして表示する方法があります。ヒューズ。 FUSEを使用すると、ファイルに対するすべての操作(作成、開く、読み取り、書き込み、ディレクトリのリストなど)がプログラムの一部のコードを呼び出し、そのコードは任意の操作を実行できます。より実際にコマンドであるダミーファイルを作成します。。試してみることができますスクリプトファイルシステムまたはヒューズ、または野心があれば、自分で行うことができます。
このユースケースでは、動的生成が正しい選択であるとは思わない。少し複雑で、どこでも動作しません(FUSEはroot以外のユーザーが常にアクセスできるわけではなく、Cygwinでも一部のシステム(Windowsなど)ではまったく使用できません)。私がやったのと同じアプローチを使用することをお勧めします。一部のインクルード機能(.bash_profile
、、、.gitconfig
...)を持つファイルの場合、構成ファイルの1つを変更した場合は、他のファイルにこの方法を使用してくださいmake
。 )アプリケーションから読み取ったファイルを再生成します。