ユーザーのホームディレクトリに関連する ~/SomeDir へのシンボリックリンク

ユーザーのホームディレクトリに関連する ~/SomeDir へのシンボリックリンク

他の人と共有するプロジェクトがあります。 gitに保存され、配布されます。

これには、gitアーカイブの外部のディレクトリへのリンクを含める必要がありますが、次のようにいくつかの共通ライブラリを持つユーザーのホームディレクトリ内になければなりません。

Arduino -> /home/gilhad/GitHub/arduino-1.8.1
Arduino-Makefile -> /home/gilhad/GitHub/Arduino-Makefile
Bare-Arduino-Project -> /home/gilhad/GitHub/Bare-Arduino-Project

それは私(ギルハード)には効果がありますが、私の友人にはそうではありません。次のリンクを作成したいと思います。

Arduino -> ~/GitHub/arduino-1.8.1
Arduino-Makefile -> ~/GitHub/Arduino-Makefile
Bare-Arduino-Project -> ~/GitHub/Bare-Arduino-Project

これにより、アカウントの以前の問題と友だちアカウントの後続の問題が効果的に解決されます。

Arduino -> /home/friend/GitHub/arduino-1.8.1
Arduino-Makefile -> /home/friend/GitHub/Arduino-Makefile
Bare-Arduino-Project -> /home/friend/GitHub/Bare-Arduino-Project

(このgit / actualディレクトリが実際にどこにあるかにかかわらず、プロジェクトはにも配置でき、常にユーザーのホームディレクトリ(または指すすべてのディレクトリ)に配置されるため、ターゲットは機能しませ../../../GitHub/....ん。~/tmp~/my/special/folder/for/projectsGitHub/home/gilhad/home/friend~

答え1

実際、シンボリックリンクを使用してこれを行うことはできません。チルダを使用してホームディレクトリを参照することはシェル機能であり、すべてのプログラムでサポートされていないという事実に加えて、(多くのプログラムでサポートされていますが)「ホームディレクトリ」の全体的な概念はユーザースペースの概念であり、すべてのプログラムでサポートされていません。カーネルには存在しません。したがって、シンボリックリンクを解決するカーネルファイルシステム層には必要な知識がありません。

Linuxではできる本当に必要な場合は、マウントネームスペースとバインドマウントを使用して何かを構成できます。 (望むよりここここそしてここ)


とにかく、リポジトリ自体の外部を指すリンクをgitリポジトリに作成するというアイデアが少し奇妙に見えます。リンクは、自分が設定したシステムに準拠しているユーザーだけが使用できます。他のレイアウトが必要な場合や必要な個々のユーザーは少し幸運ではありません。ユーザーファイルの場所を保存するために環境変数を使用することを検討してください。ユーザーを$ARDUINO指す方法で表現する/home/foo/GitHub/arduino-1.8.1か、/home/foo/GitHub/arduino-someotherversionユーザーが要求したように表現します。

関連情報