の続き。
- windows PCの名前変更
- .bashrc を流用する
- Linuxbrew をインストールする
- ghq + peco の関数を bash でも使えるようにする
- Windows本体とUbuntuとの間でフォルダ、ファイルの共有をする
- これで前の記事でやりたかったことは一応全部完了
windows PCの名前変更
NEC LAVIE公式サイト > サービス&サポート > Q&A > Q&A番号 017895
これの通りに実行するだけ。
.bashrc を流用する
一からbashなりを構築するのはさすがに面倒なので、もともと持っていたMac用dotfilesを何とかUbuntuにも使えないかと考えた。もともと持っていたMac用dotfilesのリポジトリは以下。
この中の以下のコミットが現時点の最新 .bashrc
。
config/.bashrc at e30a1fa9fde780b8011ab9ed413b77c8ef77a412 · kimikimi714/config · GitHub
Macっぽいオプションはちょっと修正するとしてUbuntuで使えないことはなさそう。HomebrewはUbuntuでは(今はまだ)使えないので、 brew
コマンドは使わない方向でちょっといじってみる。いじった結果がこれ。
-# 実行時オプションとかショートカットaliasの設定 -alias ls='ls -G' -alias grep='grep --color' -alias pass='mono ~/Downloads/KeePass-2.26/KeePass.exe' +# alias +alias ls="ls --color=auto" # gitコマンドラインの見せ方設定 -source $(brew --prefix)/etc/bash_completion.d/git-prompt.sh -source $(brew --prefix)/etc/bash_completion.d/git-completion.bash +source /etc/profile.d/bash_completion.sh +source /usr/share/bash-completion/completions/git GIT_PS1_SHOWDIRTYSTATE=true export PS1='\[\033[32m\]\u@\h\[\033[00m\]:\[\033[34m\]\w\[\033[31m\]$(__git_ps1)\[\033[00m\]\$ ' - -# homebrewでインストールしたものが/usr/binより先に読み込まれるようにするための設定 -export PATH="/usr/local/bin:$PATH"
Ubuntuにもともと入っている bash_completion
を利用してターミナルの色付けを行うようにした。 git
コマンドの自動補完も効くようについでに修正。今の見た目はこんな感じ。
他、MacのコマンドのオプションはMac仕様だったりするので取り急ぎ ls
コマンドは常に色づきになるようにした。
Ubuntuの bash_completion
については以下の記事
git
コマンドの自動補完については以下の記事
を参照した。
Linuxbrew をインストールする
Brewfile
をUbuntuに使えたりしないかなーと思って調べたらLinuxbrewというものがあることを知った。正直なところMacで使ってた Brewfile
をそのまんまUbuntuに使うのは気が引けるのだが、コマンド体系が同じになるとMacとUbuntu間でやってる作業が統一できる点で便利なので、これは入れることに決定。
インストール作業
インストール方法は以下の記事を参照しつつ、実際の作業を記載する。
公式サイト の方に書いてある通りにコマンドを叩く。
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
こんな感じで本当に入れるか確認される。
普通に入れると /home/linuxbrew/.linuxbrew/bin/brew
に brew
コマンドが入るので、ここで入ったLinuxbrewがUbuntu再ログイン時にも走るように .profile
もしくは .bash_profile
を修正する。私は元の .bash_profile
に大したものが入ってないことを確認したので、そっちは削除して .profile
ファイルの行末に追加することにした。
+# linuxbrew setting +eval $(/home/linuxbrew/.linuxbrew/bin/brew shellenv)
これでUbuntuの再ログイン時もLinuxbrewの設定がオートロードされるようになる。
ちなみに今回入ったLinuxbrewは以下のバージョンになる。
$ brew -v Homebrew 2.2.10 Homebrew/linuxbrew-core (git revision 27c4a; last commit 2020-03-14)
GoをLinuxbrewを使って入れなおす
https://t.co/5ZI9i1T4W6 ここでやった設定がある前提でいじり始めたら、前の設定はもうないものとなってることがわかった。でもダウンロードしたgoのファイル自体はあったから、パスとかの設定をbashrcに保存し忘れたんだな…
— きみきみ氏 (@kimikimi714) 2020年3月15日
ここで書いた通りなんだが、前回入れた Go がただの go
コマンドでは打てなくなってて .bashrc
の方に設定を入れ忘れたことに気が付いたので、いっそLinuxbrewで入れなおすことにした。前回のGoは /usr/local/go
に入ってたので、こっちは削除することにした。
では早速 brew
で go
コマンド使えるようにする。
$ brew install go ==> Installing dependencies for go: patchelf ==> Installing go dependency: patchelf ==> Downloading https://linuxbrew.bintray.com/bottles/patchelf-0.10.x86_64_linux.bottle.tar.gz ==> Downloading from https://akamai.bintray.com/98/988b224305ff3fecadf9bbf5fbe1b18061077be6c896935b2cef29298526f5b8?__gd ######################################################################## 100.0% ==> Pouring patchelf-0.10.x86_64_linux.bottle.tar.gz 🍺 /home/linuxbrew/.linuxbrew/Cellar/patchelf/0.10: 8 files, 921.5KB ==> Installing go ==> Downloading https://linuxbrew.bintray.com/bottles/go-1.14.x86_64_linux.bottle.tar.gz ==> Downloading from https://akamai.bintray.com/c4/c455f4f3cd29212dc03082815ed8a2a2ee483d54ec58d92f2e1660900f0a7569?__gd ######################################################################## 100.0% ==> Pouring go-1.14.x86_64_linux.bottle.tar.gz 🍺 /home/linuxbrew/.linuxbrew/Cellar/go/1.14: 9,431 files, 422.8MB $ type go go is /home/linuxbrew/.linuxbrew/bin/go $ go version go version go1.14 linux/amd64 $ go env GOPATH /home/kimikimi714/go
これでOK。ほぼHomebrewと変わらない。
ghq / peco をLinuxbrewで入れる
ghq
や peco
もいっそLinuxbrewから入れようと思って $GOPATH/bin
下のghqは削除しつつLinuxbrewで入れなおす。
$ brew install ghq (略) $ brew install peco (略) $ brew ls ghq go patchelf peco
Brewfile を dump する
今のところ Brewfile
を使わないといけない理由はないが、使いたくなったら使えるようにするかと思ってhelpを参照しようとしたところインストールが始まった。
$ brew bundle --help ==> Tapping homebrew/bundle Cloning into '/home/linuxbrew/.linuxbrew/Homebrew/Library/Taps/homebrew/homebrew-bundle'... remote: Enumerating objects: 51, done. remote: Counting objects: 100% (51/51), done. remote: Compressing objects: 100% (43/43), done. (略)
今はデフォルトでは入ってないんだな。Brewfileを落としておこう。
$ brew bundle dump
あとで Brewfile
の変更差分を見るとだいぶすっきりしたことがわかった。
ghq + peco の関数を bash でも使えるようにする
の通りの関数を .bashrc
に足す。
source /usr/share/bash-completion/completions/git GIT_PS1_SHOWDIRTYSTATE=true export PS1='\[\033[32m\]\u@\h\[\033[00m\]:\[\033[34m\]\w\[\033[31m\]$(__git_ps1)\[\033[00m\]\$ ' + +function repo { + local dir="$( ghq list -p | peco )" + if [ ! -z "$dir" ] ; then + cd "$dir" + fi +}
動作確認済み。
Windows本体とUbuntuとの間でフォルダ、ファイルの共有をする
全部を共有する必要はなくて作った repo
コマンドで参照するディレクトリがWindowsと共有される状態を作りたい。理由は単純で、持ってるIntelliJがここで使えないのはもったいないからだ。UbuntuにGUIを無理やり入れるのはやりたくない。かつ、作られるファイルのパーミッションはLinuxに合わせたものがよく、Windowsで作ったものが 777 になったり、あるいはUbuntuで作ったものをWindowsでも見れるようにしたときに 777 になる状態を避けたい。
と思っていろいろ調べていたらやっと記事を見つけた。
この中の「Windowsのファイルシステム上のファイルのパーミッションが妥当な形で見えるようにする(2019年4月10日追記)」が私のやりたかったことで、Ubuntu側に以下の内容で /etc/wsl.conf
を置く。
[automount] options = "metadata,umask=22,fmask=111"
以下の公式の記事にも方法は実は書いてあるが
いまいち設定の仕方がわからなくて(もう一個先の記事の結構下の方までいって、よく読んだらやっとわかるレベル)、ずっと探していた。ちなみに umask
はファイルとディレクトリ両方、 fmask
はファイルのみに適応される。実際の挙動をいろいろ確かめるとまだ個人的にはいけてないなと思う部分があったのだけど使用には耐えうる感じになったので一旦OK。例えばWindowsからIntelliJを立ち上げてファイルのひな型を突っ込むとUbuntuからはパーミッションが755とかになってる気がするが、まだここは試してない。Ubuntu側からファイルを作ったときにWindows側で勝手にパーミッションがいじられたりしないところが今時点での到達点になってる。
これで前の記事でやりたかったことは一応全部完了
実運用に乗せてみるとまだほかにも粗が出てきそうだが、一旦目的としていた環境は手に入ったので満足。
vimの設定がまだだなーと気が付いたが、それはまた今度。