AWS EC2 (Amazon Linux 2) へfishを導入する
最近新しく入った会社での仕事は、「個人用に割り当てられたEC2インスタンス」上に開発環境があります。
「EC2上でもローカルで慣れ親しんだfish
シェル環境で開発をしたいぞ!!!」と思い、EC2
内でfish
環境を構築した備忘録です。
色々方法はあると思いますが、自分が慣れているHomebrew
を使ったfish
の導入方法をまとめました。
そもそもfish
ってどんなヤツなん?使ったらどんないいことあるん?ってのは、他の記事にたくさんまとまっているので、そちらを参考にしてください!
fish shellが結構良かった話 - Qiita
全訳!fishシェル普及計画
ログインShellをfishにして作業効率を改善する
サーバー環境
- EC2インスタンス
- Amazon Linux2
- t2.micro
手順
git, rbenv, Rubyのインストール
git, rbenv, Rubyのインストール
参考: EC2(Amazon Linux2)へRubyのインストールするよ2020 - Qiita
gitのインストール
最初はgit
すらない状態からスタートです。
$ sudo yum install git -y
rbenvのインストール
$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
$ source ~/.bash_profile
$ rbenv -v
// rbenvのバージョンが表示されればインストール正常にインストール完了
ruby-buildのインストール
$ git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
$ cd ~/.rbenv/plugins/ruby-build
$ sudo ./install.sh
$ rbenv install -l
// インストール可能なRubyのバージョン一覧が表示されればruby-buildのインストールは成功
Rubyのインストール
$ sudo yum -y install gcc-c++ glibc-headers openssl-devel readline libyaml-devel readline-devel zlib zlib-devel libffi-devel libxml2 libxslt libxml2-devel libxslt-devel sqlite-devel
$ rbenv install 2.7.2 //めっちゃ時間かかりますので気長に待ちます
$ rbenv global 2.7.2
$ ruby -v
Homebrewのインストール と ユーザーのパスワード設定
fish
をインストールするためのパッケージマネージャーHomebrew
をインストールしようとすると、ユーザー(ここではec2-user
)のパスワード入力を求められます。初期設定ではパスワードの設定をしていないので、まずはec2-user
のパスワードを設定してあげます。
rootユーザーへ切り替え
パスワードの変更はroot
ユーザーのみ許されているので、まずはec2-user
からroot
ユーザーに切り替えます。
$ sudo su -
ターミナルのプロンプト(左側に表示されているこういう↓やつ)が
[ec2-user@ip-xxx-xx-xx-xxx ~]$
から
[root@ip-xxx-xx-xx-xxx ~]#
に切り替わったと思います。
パスワード設定
では、ec2-user
のパスワードを設定します。
$ passwd ec2-user
Changing password for user ec2-user.
New password: //設定したいパスワードを入力します
$ passwd ec2-user
を叩くと、Changing password for user ec2-user.
というメッセージとともにNew password:
を聞かれます。設定したいパスワードを入力しましょう。
次にRetype new password:
と聞かれるので、もう一度入力して完了。
$ passwd ec2-user
Changing password for user ec2-user.
New password: //設定したいパスワードを入力します
Retype new password: //確認の為再度入力します
passwd: all authentication tokens updated successfully. //これでパスワードの設定完了です
忘れないように、ec2-userへ切り替えます。
$ sudo su - ec2-user
$ source ~/.bash_profile //ユーザーを切り替えたので、再度.bash_profileを読み込んであげます
Homebrewをインストール
ではHomebrewをインストールします。パスワードを聞かれたら先ほど設定したパスワードを入力します。
$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
インストールしたら、PATHを通してあげます。
$ echo 'export PATH=/home/linuxbrew/.linuxbrew/bin:$PATH' >> ~/.bash_profile
$ source ~/.bash_profile
$ brew -v
バージョンが表示されたら、インストール成功&PATHが通っているということです。
fishのインストール
ではいよいよ、Homebrew
を使ってfish
をインストールします。
$ brew install fish
インストール後は、fish
コマンドが使えるようになります。
$ fish -v
fish, version 3.2.1
ログインシェルにfish
を設定するため、/etc/shells
にパスを追加します。
まずは、fish
がある場所(フルパス)を確認
$ which fish
/home/linuxbrew/.linuxbrew/bin/fish //このフルパスをあとで追記する
/etc/shells
を編集します
$ sudo vi /etc/shells
・
・
・
/bin/tcsh
/bin/csh
/home/linuxbrew/.linuxbrew/bin/fish //この1行を追加
デフォルトログインシェルを切り替えるchsh
コマンドが使えるように、util-linux-user
をインストールします。
【AWS】EC2でchshのシェル変更できない問題解決【zsh】
$ sudo yum install util-linux-user -y
デフォルトログインシェルをfishに変えてあげます。またパスワードを聞かれるので、入力します。
$ chsh -s /home/linuxbrew/.linuxbrew/bin/fish
一度$ exit
でssh
を抜けて再度ssh
ログインしてみて、
$ echo $SHELL
/home/linuxbrew/.linuxbrew/bin/fish //fishに変わっている
$ echo $SHELL
した結果が/home/linuxbrew/.linuxbrew/bin/fish
に変わっていたら成功です。(プロンプトが変わっているので見た目でも違いが分かると思います!)
(補足)VSCodeのRemote SSHが使えない!?
ちなみにですが、僕は今回fish
を導入したEC2上にプロジェクトのソースコードがあり、VSCodeのRemote SSH
機能を使ってVSCode上でソースの編集を行っているのですが、なんとデフォルトシェルをfish
にした状態ではRemote SSH
で接続できないことがわかりました。
VSCode の Remote - SSH 機能を使って EC2 上で開発する
VSCode Remote SSH接続できない
なので、僕はデフォルトログインシェルはbash
のままで、ssh
ログイン後に
$ fish
を叩いてfish
に切り替えています。この辺は各々の作業環境に合わせて良き方を選んでください。
(番外編)ちょっとだけカスタマイズして良い感じにする
ここまででfishのインストールが完了したので記事としてはもう終わりでも良いのですが、せっかくなので少しだけカスタマイズしてさらに使いやすくしちゃいます!
テーマを設定する
fisherman
のインストール
まずは、fisherman
というfish
用のパッケージマネージャーをインストールします。
$ curl -Lo ~/.config/fish/functions/fisher.fish --create-dirs git.io/fisher
$ fisher -v //バージョンが表示されたらインストール成功です
oh-my-fish/theme-bobthefish
をインストール
いろんな記事でオススメされていたので僕も導入してみた oh-my-fish/theme-bobthefish というテーマを入れましょう!
$ fisher install oh-my-fish/theme-bobthefish
※ちなみに、パッケージ追加用のinstall
コマンドは、fisher
のバージョンが古いやつだとadd
だった時代もあるので、エラーが出た場合はadd
で試してみてください。fish
関連の記事を調べてヒットするのはadd
コマンドを紹介したものが多いです。
oh-my-fish/theme-bobthefish
のインストールが完了しましたが、多くのテーマではPower fonts
というフォントを入れないと文字化けしてしまうので、入れてあげます。
$ git clone https://github.com/powerline/fonts.git --depth=1
$ cd fonts
$ ./install.sh
ターミナルのアプリがiterm2
だったら、Preferences
> Profiles
> Text
> Change Font
から、好きなフォントを選んでください。
プラグインを入れる
僕もfish
使い始めてまだ数ヶ月で全然使いこなせているわけではありませんが、オススメプラグインを2つほど紹介します。
jethrokuan/z
$ fisher install jethrokuan/z
華麗にディレクトリ移動してくれるプラグインです。すべてのディレクトリへ直接移動することができます。
以下は~
から$ z foli
を叩いて、 /Applications/MAMP/htdocs/folicolle
に移動してくれています。
fish shellが結構良かった話によると、
原理としてはコマンドの履歴のパスから指定された相対パスに部分一致するパスを検索しているそう。行ったことあるディレクトリにしか行けないです。
foli
でfolicolle
ディレクトリに行ってくれてかなり助かります。
jethrokuan/fzf
fzf
はctl + r
を使ったコマンドの履歴絞り込みができるツールです。こいつはマジで使えます。
$ brew install fzf
$ fisher install jethrokuan/fzf
また、~/.config/fish/config.fish
というファイルを作って、下記の設定を追加します。
$ vi ~/.config/fish/config.fish
↓この2行を追加
set -U FZF_LEGACY_KEYBINDINGS 0
set -U FZF_REVERSE_ISEARCH_OPTS "--height=100%"
FZF_LEGACY_KEYBINDINGS
はfish
の過去バージョンとコンフリクトが発生していたため、新しいキーバインドを使用するのに必要です。
FZF_REVERSE_ISEARCH_OPTS
は履歴のフィルタリング時に入力欄をフルスクリーンで表示するための–height
オプションを設定しています。
これで、ctl + r
で快適にコマンド履歴を検索できるようになり、素敵なターミナルライフを送れることでしょう!!!
もし、
↓この2行を追加
set -U FZF_LEGACY_KEYBINDINGS 0
set -U FZF_REVERSE_ISEARCH_OPTS "--reverse --height=100%" //--reverseオプション追加
とした場合は、ctr + r
で履歴検索モードに入ったとき一番上にコマンド入力欄が出現し、履歴が上から順に並びます。これはお好みで。
参考
git, rbenv, Ruby, Homebrewインストール
rootユーザーへの切り替えやパスワード変更など Linuxコマンド系
- 【 passwd 】コマンド――パスワードを変更する - @IT
- 【su】Linuxでユーザーを切り替えるコマンド - UX MILK
- 【 su 】コマンド――スーパーユーザー(rootユーザー)の権限でシェルを実行する - @IT
- 【AWS】EC2でchshのシェル変更できない問題解決【zsh】
fishシェル関係
Author And Source
この問題について(AWS EC2 (Amazon Linux 2) へfishを導入する), 我々は、より多くの情報をここで見つけました https://qiita.com/kiwatchi1991/items/56adb6c1d0d38e82a66b著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .