
同様の「プロファイル」を持つさまざまなLinuxシステムがあります。私の設定を同期したままにしたいです。たとえばvimrc
、、、zshrc
。私が持っている問題は、異なる設定とソフトウェアバージョンを持つ異なるLinuxディストリビューションであるということです。たとえば、一部はWindowsシステムに付属しており、一部はZshがあり、一部はZshがあり、一部はそうではなく、一部は異なるバージョンがあります。 DropboxやGithubなどで設定を設定できることに気づきました。しかし、環境がさらに複雑になると、これはさらに難しくなります(Githubにすでに記載されています)。また、各コンピュータを同期状態に保つことは難しいことがわかりました。これらは主に異なるインターネット接続(および一部の家やオフィスなどの他のネットワーク)を使用するクライアントシステムであるため、システムへの「プッシュ」は同期を維持しません。zshrc
以前のバージョンと互換性はありませんが、テンプレートと同期しないように、このようなヒントを与えることをお勧めします。
この問題を解決するのに役立つ既存のソリューションはありますか?
答え1
何をしているのか教えてくれます。これは、どのプログラムの構成ファイルが存在するか、システムごとにどのように異なるか、移植可能な構成ファイルを作成すること、および各リリース間のメンテナンスを繰り返すのにどれくらい投資するかによって、最善の選択かもしれません。 。サイトごとに多くの努力や文書が必要です。
私のすべての設定ファイルはバージョン管理の対象です。私は仕事に最適なCVSを使用していますが、今起動している場合(Linusがバージョン管理を信じていない場合とは対照的に)、他のバージョン管理システムを使用できます。チェックアウトが何度もあるかどうかにかかわらず、バージョン管理は常に良いです。サイト間の変更を同期するためにコミットして更新します。
私はポータブル文書を作成しようとしています。たとえば、私は.zshrc
2.5以降のすべてのバージョンと互換性がなければなりません(しかしこれは少し拡張です。最近テストしておらず、最後にzsh 2.5システムにロードしたときに本当に遅かったです)。これは私にand(避けられないとき)のようif type someprogram >/dev/null 2>/dev/null
なものが多いことを意味します。case $ZSH_VERSION
設定ファイルが解釈された言語(bash、Emacs、Vim、Fvwm、Sawfishなど)である他のプログラムの場合も同様です。これらのファイルの別々のバージョンを維持したくないので、各バージョン固有の定義は条件文の下にあります。煩わしさを減らしたい場合(少数の組み合わせをサポートするコストで)これを行うことができます。
case $ZSH_VERSION in
[5-9]*|4.[2-9].*) . ~/.zshrc-42;;
4.[01].*) . ~/.zshrc-40;;
3.1.[6789]) . ~/.zshrc-31;;
*) . ~/.zshrc-2;;
esac
ls
ただし、他のシステム依存関係があります(たとえば、gnuls --color -b
または、ls --color -b
またはcolorls -G
、または...バージョンのエイリアスを指定しているかどうかがわかりますls -Fb
)。すべてを別々のファイルに分割することはすぐに退屈になる可能性があります。
私は、マスターファイルによってロードされる各サイトの設定を含むサイト固有のディレクトリを維持します。たとえば、私の.zshrc
インクルード行は
if [ -r ~/Here/lib/shell/local.zshrc ]; then
. ~/Here/lib/shell/local.zshrc
fi
Here
サイト固有の構成ファイルを含むディレクトリへのシンボリックリンク。カスタマイズされていない私のウェブサイトには存在しません。ローカルには.zshrc
通常、エイリアス、ディレクトリエイリアスなどが含まれます。ほとんどのサイトには、.profile
いくつかの環境変数を定義するローカル変数があります。すべてのサイト固有の設定は同じバージョン管理システムにあります(すべてを確認するには数kBしかかかりません)。
一部のファイルは makefile によって自動的に生成されます。たとえば~/.ssh/config
、一般的なホストのリスト(どこからでもアクセスできるコンピュータのエイリアスとオプション)とサイト固有のホストのリスト(ネットワーク内でのみアクセスできるコンピュータ)から生成するスクリプトがあります。
答え2
通常、UNIXの世界では、複数のホスト(同じ環境内)間でこれらの同期を維持したい場合auto_home
(自動マウント)を使用して、ホスト間でホームディレクトリをマウントします。
したがって、すべてのホストが同じネットワーク上にある場合は、この方法が役立ちます。
そうでない場合は、マスターサーバーを設定してhomedirファイル(.bash_profile、.vimrcなど)をターゲットホストに定期的に同期できます。