変数シンボリックリンクを作成するには? (あるいは同様のもの)

変数シンボリックリンクを作成するには? (あるいは同様のもの)

どうやって作れますか?変数シンボリックリンク現在のユーザーによって異なる場所を指していますか?可能ですか?代わりに他のものを使うべきですか?マウントポイント?どのように?

別の解決策が表示された場合、質問は次のとおりです。

私たちはUnixでSVNを使って開発するチームです。私たちはすべて同じ開発システム(リモート)を使用します。そのため、別の場所(/homeではなく/svn/[userlogin]/などの他のディスクにマウントされている特定のディレクトリ)からチェックアウトを実行します。

私たちはスクリプトとツールを使います。一部の特別なツールには、ソースファイルパスを含む複雑な構成ファイルとプロジェクトファイルがあります。間違えやすく、誤った設定や常に再生成する必要がある「プロジェクト」のため、多くの時間を無駄にしました。この複雑な構成とプロジェクトファイルをすべての開発者と共有したいと思います。

ただし、他のお支払いでこれらのファイルを共有するには、次の手順を実行する必要があります。

  • 現在のユーザーに合わせて構成/プロジェクトに保存されているパスを即座に変更
  • ユーザーによって異なる場所を指す/install/pointシンボリックリンクを使用して、「魔法の」固定パスを作成します(したがって同じプロジェクトファイルですが、異なるソースを指します)。

それ以前は、誰もが同じパス(例:/ vob)にビューをインストールし、各開発者が自分のビューを見ることができるクリアケースを使用していました。とても便利です。

似たようなことはどうすればいいですか?他の解決策を考えることができますか?ありがとうございます。

- 編集する -

Eclipse IDEを検討しています。いくつかのワークスペース設定、プロジェクト、および実行/デバッグ構成を共有したいと思います。 Eclipse(+プラグイン)設定は50個以上の小さなファイルで構成されているため編集できません。

Clearcaseを使用すると、各端末で自動的に選択された「ビュー」を指す固定の「/ vob」パスのおかげで、これは簡単です。

似たようなものが欲しいです。私が欲しい/svn/mysource各端末について、これはユーザーに関連付けられたパス内のユーザーの現在のチェックアウトを指します。

答え1

最近これを見る人のために、私は次のような小さなFUSEファイルシステムを書いています。ファミリーFS呼び出しユーザーのホームディレクトリに関連付けられているディレクトリに呼び出しを転送します。

つまり、ユーザーTylerとHomeFSマウントポイント/usr/share/bigsoft/configにディレクトリに相対的なユーザーSarahがある場合、.config/bigsoftTylerがマウントされると、ls /usr/share/bigsoft彼は自分が見ることができるのを見て、/home/tyler/.config/bigsoftSarahは自分が見ることができるものを見ます/home/sarah/.config/bigsoft

主に、独自のソフトウェアが一部のWindowsソフトウェアと同様に、一部の「インストールディレクトリ」に可変ファイルを置く必要がある状況を解決するためのものです。

答え2

コマンドを処理できるかシェル変数を挿入できるかは、アプリケーションの構成によって異なります。

bash ログインシェル ログインシェルに環境変数 LOGNAME を設定します。
アプリケーションが構成にシェル変数を挿入する場合は、構成に/svn/${LOGNAME}/を使用できます。その後、自分のパスを参照して各ユーザーと共通の構成を共有できます。

アプリケーションが構成にシェル変数を挿入しない場合は、各ユーザーのシンボリックリンクを作成し、/ svnパスへの汎用参照を作成し、共有構成で共通名を使用できます。

who現在のユーザー名が一覧表示されます。
シンボリックリンクを作成するために設定時にユーザーごとに1回実行されるスクリプトを作成したい場合。

ln -s /svn/$(who) /svn/anyuser

次に、/svn/anyuserを参照する共通設定を共有します(自分に適した共通名を選択します)。

リンクの使い方を知らず、リンクを削除する愚かなユーザーに注意してください。 (管理者に昇進したばかりです)

答え3

したがって、各ユーザーがファイルシステムで異なる内容を表示できるようにしたいと思います。 Unixは実際にはそのように設計されていません(VMSとPlan9を使用するとより簡単に設計できます)。

私が知っている唯一の方法はchroot()を使用することです。ただし、切り替えた階層にないすべてのエントリをブロックし、シンボリックリンクは階層に残り、ハードリンクはディレクトリには役立ちません。 FUSEファイルシステムを使用して目的のビューを提供しながら、実際のルートをミラーリングすることが可能である必要があります。次に、その場所にルートを移動します。自分に合った既存の方法が見つからない場合は、次のように書くことができます。

答え4

Linux や他のほとんどの Unix では、ユーザーごとに異なるコンテンツでシンボリックリンクを作成することはできません。または、可能ですが珍しいファイルシステムを介してのみ可能です(おそらくヒューズ)設定するのはかなり難しいでしょう。

ユーザーのホームディレクトリに関連するすべての設定をクリーンアップします。以下にどのファイルが/svn/$USERあるかは重要ではありません/home/$USER。各ユーザーにシンボリックリンクを作成させる/home/$USER/svn -> /svn/$USER(または自分のために1つを作成する)

一部のアプリケーションが絶対パスの使用に固執する場合は、チェックインパスをユーザーの正しいパスに置き換えるスクリプトを作成します。

sed -i -e "s:/home/\$USER/:/home/$USER/:g" .eclipse/*

コミット前のフックからリテラル文字列に戻す必要があります/home/bob/home/$USER

関連情報