Open5

まったくの知識 0 から dotfiles のインストールするまで

akasukasiakasukasi

はじめに

もうすぐ他のPCに移行しようと思ってて、「簡単に今の環境をもっていけないかなー」と調べていたら、dotfilesというものがあることを知りました。

自分も作りたいと思って、調べて必要になったものを書いていきます。

初心者なので、コマンド毎に調べていくので、さささーっと読み飛ばしてください。

開発環境

  • OS: Windows11
  • WSL2: Ubuntu 22.04
    • ↑の環境で開発していきます。
akasukasiakasukasi

シンボリックリンクって何か、いまいちわかってない

  • dotfilesを調べていたら、シンボリックリンクがよく出てきた

調べた結果

  • リンクみたいなものだった
  • 本来なら、/usr/local/bin にあるファイルを、~/bin というリンクを張っておくとか出来る。
  • これで、~/bin にあるファイルを実行すると、/usr/local/bin にあるファイルが実行される

lnコマンド

1 つ以上のファイルをディレクトリーにリンクする

ln [ -f | -n ] [ -s ] [ -p | -l ] sourcefile ... targetdirectory

必要そうなオプションだけ解説

  • -s : シンボリックリンクを作成する
  • -f : 指定したリンクファイルが存在した場合は、既存のリンクを強制的に削除する
  • -n : リンクファイルを指定した場合、普通のファイルとして扱う


  • よく使われる例
ln -sf $(pwd)/.vim ~/.vim

参考

https://www.ibm.com/docs/ja/aix/7.3?topic=l-ln-command
https://qiita.com/mitsumizo/items/3c266699d9ca7a712108
https://uxmilk.jp/51271

akasukasiakasukasi

シンボリックリンクを作成する理由

シンボリックリンクを作成するコマンドをさっと見ていたら、ほとんどの場合 ~/.vim とか ~/.config/fish とか ホームディレクトリからの相対パスで指定していた。

これは、Unix系OSのユーザーの設定ファイル環境設定ファイルがデフォルトでホームディレクトリに配置されることためであった。

Unix系のプログラムの多くは、起動時にホームディレクトリ内の特定のドットファイルやドットディレクトリを読み込まれるみたい。

なので、読み込み時に作成されたシンボリックリンクを通じて、実際のファイルとは別の場所(例えば、バージョン管理されたdotfilesディレクトリ)のファイルを読み込むことで、好きな環境にすることが出来るらしい。

↓こんな感じのイメージ
alt

akasukasiakasukasi

注意事項

dotfiles導入までの流れ

@reireiasさんの記事の手順が分かりやすかったので、これを参考に進めていく
https://qiita.com/reireias/items/b33b5c824a56dc89e1f7

参考

https://qiita.com/rainbartown/items/d7f59fe4047733c14e8b

akasukasiakasukasi

とりあえずこのスクラップのゴ―ル

  • 目標

    • まっさらな環境に、cloneして、install.shを実行するだけで、自分の環境を再現できるようにする。
  • 現時点で導入するもの

    • git
    • neovim
    • fish

0. リポジトリ作成と、設定ファイルの作成

  1. とりあえずリポジトリ作成
  • nvimのパッケージマネージャーは、lazy.nvimを使う。
#!/bin/bash

# 必要なソフトウェアのインストール
sudo apt update && sudo apt install -y git neovim fish

# カレントディレクトリを保存
CURRENT_DIR=$(pwd)

# gitの設定ファイルのシンボリックリンクを作成
ln -sfn $CURRENT_DIR/.gitconfig ~/.gitconfig

# vimの設定ファイルとディレクトリのシンボリックリンクを作成
ln -sfn $CURRENT_DIR/.vim ~/.vim
ln -sfn $CURRENT_DIR/.vimrc ~/.vimrc

# nvimの設定
ln -sfn $(pwd)/nvim/init.vim ~/.config/nvim/init.vim

# fishの設定
ln -sfn $(pwd)/fish/config.fish ~/.config/fish/config.fish

echo "インストールと設定が完了しました。"