かーくがかーくよ

色々書くよ プログラミングとか漫画とかゲームとかが主

CentOS7(さくらのVPS)のターミナルをXonshにする

はじめに

これはXonsh Advent Calendar 2018の3日目の記事です。

やること

タイトル通りで、VPSに立てたCentOS7のターミナルをXonshに変更します。 大まかなステップは下記の通りです。

  1. CentOSサーバの立ち上げ
  2. Python3のインストール
  3. Xonshのインストール
  4. 起動設定(.bashrc)
  5. その他設定(.xonshrc)

あまり高度なことはせず、あくまでVPS上で使いたい場合の簡単な導入とお考えください。

1. CentOSサーバの立ち上げ

  1. さくらのVPSのコントロールパネルにログインする。
  2. 各種設定>OSインストールに遷移する。
  3. CentOS7 x86_64を選択し、パスワード設定をしてインストールを実行する。
  4. SSH接続設定など、初期設定を行う。(参照:https://vps-news.sakura.ad.jp/tutorials/centos7-initial-settings/

※OSインストール時、特にスタートアップスクリプトは設定しなかったのですが、yum-updateぐらいは設定してもよかったかもしれないです。

2. python3のインストール

CentOS7に標準で入っているPythonは2.7系のかなり古いものなので、3系を入れてやる必要があります。 標準のパッケージリストではPython3系を指定できないので、直接RPMを指定します。

sudo yum update  # この後の作業で必要なわけではないが、どうせやっておく必要がある
sudo yum install -y https://centos7.iuscommunity.org/ius-release.rpm
sudo yum install python36u python36u-libs python36u-devel python36u-pip

3. Xonshのインストール

いよいよ本命のXonshのインストールです。 CentOSにもともと入っているPython2.7系ではなく3系を使うので、pip時も3系を指定します。

sudo python3 -m pip install xonsh
sudo python3 -m pip install gnureadline
xonsh  # Xonshが起動する

4. 起動設定(.bashrc)

起動時にxonshが自動的に立ち上がるよう、~/.bashrcの末尾にxonsh起動コマンドを追記します。

# .bashrc
# ...中略...
xonsh  # 末尾に追記

5. その他設定(.xonshrc)

Xonsh側の設定ファイルである~/.xonshrcを作成します。

.xonshrcの内容については下記の記事を参考にしています。 xonshrcを書く - Stimulator

$VI_MODE = False
$COMPLETIONS_CONFIRM = True
$INDENT = "    "
$CASE_SENSITIVE_COMPLETIONS = False
$HISTCONTROL = "ignoredups"
$XONSH_AUTOPAIR = True
$AUTO_CD = True
$XONSH_SHOW_TRACEBACK = True
$SUPPRESS_BRANCH_TIMEOUT_MESSAGE = True
$UPDATE_COMPLETIONS_ON_KEYPRESS = True
$PROMPT = "{env_name:{} }{BLUE}{user}@{hostname}{YELLOW} [ {cwd} ]\n{CYAN}{prompt_end} {NO_COLOR}"
    # 参照;https://xon.sh/tutorial.html?highlight=prompt_end#customizing-the-prompt
$LS_COLORS="di=32:ln=36:so=32:pi=33:ex=31:bd=46;32:cd=43;32:su=41;30:sg=46;30:tw=42;30:ow=43;30"
    # 参照:https://qiita.com/aosho235/items/6e4737a1eca11c41da9b

from xonsh.lazyasd import lazyobject
import importlib
lazy_module_dict = {
    'sys': 'sys',
    'random': 'random',
    'shutil': 'shutil',
    'requests': 'requests',
    'os': 'os',
}
for k,v in lazy_module_dict.items():
    t = "@lazyobject\ndef {}():\n    return importlib.import_module('{}')".format(k, v)
    exec(t)

aliases['ls'] = "ls --color=auto"
aliases["l"] = "ls -l"
aliases["lf"] = "ls -f"
aliases["ld"] = "ls -d"
aliases["la"] = "ls -la"
aliases["ll"] = "ls -l"
aliases["vx"] = "vim ~/.xonshrc"

以上で、設定は完了です。 SSH接続でVPSに接続すると、いい感じのxonshが立ち上がります。

おわりに

Linuxサーバに慣れている人にとってはそれほど引っかかるところもないとは思うのですが、気軽にXonshを試す導線になればいいなと思い記事にしてみました。

Windowsでも快適に使えないか格闘中なので、自分なりのベストプラクティスが見つかったら記事にしてみたいです。(既に見つけている方がいたらぜひ教えてください…)