2022年5月2日月曜日

[WSL] Windows Subsystem for Linuxを再インストールする [更新 2022年6月25日]

Windows Subsystem for Linux (WSL)のインストール

1. コントロールパネル → プログラム → Windowsの機能の有効化又は無効化 を選択

2. Windows Subsystem for Linuxにチェックを入れる


Ubuntuのインストールと設定

1. MicrooftストアからUbuntu 20.04.4 LSTをインストール

2. Ubuntuのコンソールが起動しインストールが始まる(数分かかる)

3. インストール終了後、ユーザー名(仮に'usr_name'とする)とパスワードの設定が求められるので適当に決める

** 以降 'usr_name'をhida、パスワードを12345とする。


4. Ubuntuをアップデートする
$ cd /etc/apt
$ sudo sed -i.bak -e "s/http:\/\/archive\.ubuntu\.com/http:\/\/jp\.archive\.ubuntu\.com/g" sources.list
* source.list中の「http://archive.ubuntu.com」という文字列を
 「http://jp.archive.ubuntu.com」という文字列に置き換える。元のファイルは sources.list.bakという名前でバックアップ (アップデートに日本のサーバーを利用する)
$ cd
* HOMEに戻しておく
$ sudo apt update
$ sudo apt upgrade
* "-y"を付けると更新するかどうかを聞いてこない
$ sudo apt upgrade -y
・Ubuntuのバージョンを確認する
$ lsb_release -a

5. UbuntuでPPAを削除する方法
削除したいPPAを探す
$ sudo ls /etc/apt/sources.list.d
見つけたら
$ sudo rm -i /etc/apt/sources.list.d/PPA_Name

.bashrcに変更を加えた場合は
1. ログインし直す
2. $ sourse ~/.bashrc (source .bashrc) または $ . ~/.bashrc (. .bashrc)
のどちらかで設定を反映させる


エディタmicroのインストール

Linux初心者の悩みを解消!「micro」を使って簡単ファイル編集

設定ファイル .bashrc, .profile等を編集することになるが、初心者がvi(vim)を使うのは厳しいのでこれを入れておく。
特徴
・Windowsなどと共通のキーボード操作が使える(Ctrl-cでコピー、Ctrl-vで貼り付けなど)
・キーボード操作を自分好みにカスタマイズできる
・GUIアプリのようにマウスでカーソル移動や範囲選択ができる
・ファイルの形式を認識して色分けして分かりやすく表示できる
・デスクトップアプリとクリップボードを連動できる
・ターミナル上で動くため、新規ウインドウは不要

1. microのインストール
以下と書いてあったが、現在のWSLではsnapは未対応と出た
$ sudo snap install micro --classic

2. 以下の方法で「~/bin/micro」にインストールする
$ [ ! -e ~/bin ] && mkdir ~/bin && export PATH=$PATH:$HOME/bin
$ curl -sL https://gist.githubusercontent.com/zyedidia/d4acfcc6acf2d0d75e79004fa5feaf24/raw/a43e603e62205e1074775d756ef98c3fc77f6f8d/install_micro.sh | bash -s linux64 ~/bin

3. microをデフォルトのエディタに設定する
~/.bashrcに下記を追加
----------
export VISUAL=micro
export LESSEDIT='micro ?lm-startpos %lm,0. %f'
# PATHを通す
export PATH=$PATH:$HOME/bin
----------

4. デスクトップ環境のクリップボードとの連携
スクリーンエディタのコピーは通常、エディタ内部に保持されるだけで、デスクトップ環境のクリップボードには入らない。xclipコマンドをインストールすれば、コピーやカットした文字列をデスクトップ環境のクリップボードに入る。
$ sudo apt -y install xclip


ページャーlvのインストール

$ sudo apt install lv
エディタをviからvimに変える。~/.bashrcに以下を追加
alias lv="lv -c -E'vim -c %d'"


日本語環境の設定

1. 以下のパッケージをインストールする
$ sudo apt install language-pack-ja

2. エラーメッセージなどを日本語にする
$ sudo update-locale LANG=ja_JP.UTF-8

3. Ubuntuを終了する
$ exit

4. Ubuntuを起動し確認する
$ echo $LANG
日本語(ja_JP.UTF-8)になっていればOK

5. タイムゾーンを日本(JST)にする
$ sudo dpkg-reconfigure tzdata
アジア → 東京 を選択する(タブキーで「了解」に移動し、「Enter」を押す)

6. Manの日本語化
$ sudo apt install manpages-ja manpages-ja-dev

7. Windowsのフォントが使えるようにする
$ sudo apt install fontconfig
$ sudo ln -s /mnt/c/Windows/Fonts /usr/share/fonts/windows
$ sudo fc-cache -fv
* Windowsでフォントをインストールする時に「すべてのユーザーに対してインストール」を選ばないとフォントがC:\Windows\Fontsにインストールされない。

・~/.bashrcに以下の行を追加
----------
export LC_MESSAGES=ja_JP.UTF-8
export LC_IDENTIFICATION=ja_JP.UTF-8
export LC_COLLATE=ja_JP.UTF-8
export LANG=ja_JP.UTF-8
export LC_MEASUREMENT=ja_JP.UTF-8
export LC_CTYPE=ja_JP.UTF-8
export LC_TIME=ja_JP.UTF-8
export LC_NAME=ja_JP.UTF-8
----------


Xサーバ(VcXsrv)のインストール

WSL上にXサーバをインストールしてGUIを実現する(VcXsrv編)

1. Windows上でXサーバとしてVcXsrvをインストールする
https://sourceforge.net/projects/vcxsrv/

2. ~/.bashrcに以下の行を追加
----------
# for WSL 1
# export DISPLAY=localhost:0.0
# for WSL 2
export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0
export LIBGL_ALWAYS_INDIRECT=1 <- 追加、意味は不明
----------

3. Ubuntu上でライブラリ、パッケージをインストール
$ sudo apt install git build-essential libssl-dev libreadline-dev zlib1g-dev x11-apps x11-utils x11-xserver-utils libsqlite3-dev nodejs fonts-ipafont libxml2-dev libxslt1-dev dbus-x11
* Xサーバを動かすだけなら下記でいいみたい
$ sudo apt install x11-apps x11-utils x11-xserver-utils dbus-x11

4. 動作確認のためxeyesを起動してみる
* 事前にWindows側でVcXsrvを起動させておく
$ xeyes
目玉のウインドウが表示さればOK


[注] XLaunchが自動起動しなくなった
何もしていないのに起動しなくなった。同じ設定のもう一台のPCでは問題ないのに。
仕方が無いので起動方法を変えてみる。
スタートアップフォルダにxlaunch.exeのショートカットを入れる。
ショートカットの右クリック→プロパティを開く。
リンク先を下記に変更する。
"C:\Program Files\VcXsrv\xlaunch.exe" -run "C:\Program Files\VcXsrv\config.xlaunch"

設定不要で簡単にインストールできる「GWSL」という物もあるそうです


gnome-terminalの利用

$ sudo apt install gnome-terminal
$ dbus-uuidgen | sudo tee /etc/machine-id

gtermというコマンド名でgnome-terminalを呼び出せるように設定する
~/.bashrcに以下を追加
----------
alias gterm="/usr/bin/gnome-terminal"
----------


lsで表示される色を変える

Ubuntu on Windows Subsystem for Linux 移行備忘録
$ cd /usr/local/src
$ sudo git clone https://github.com/seebi/dircolors-solarized
$ sudo chown -R hida dircolors-solarized
* hidaは各自のユーザー名に変える
$ ln -s /usr/local/src/dircolors-solarized/dircolors.ansi-dark ~/.dircolors

こっちの方が良さそう
LS_COLORS - lsコマンドの結果に色を付ける
Window Terminalの下記をコメントにする
// "colorScheme": "Ubuntu20.04LTSColorScheme",
~/.bashrcに追加
export LS_COLORS="no=32:fi=31:di=36:ln=97:ex=35:ow=93:*.jpeg=04"

* ファイルタイプ
no: デフォルト, fi: ファイル, di: ディレクトリ, ln: シンボリックリンク, ex: 実行可能ファイル, ow: 誰でも(other user)書き込み可能ディレクトリ, *.<拡張子>: 自由な拡張子に色づける(例:*.bmp=91)

* 文字の色
30: 黒, 31: 赤, 32: 緑, 33: オレンジ, 34: 青, 35: 紫, 36: 水色, 37: グレー, 90: 暗いグレー, 91: 明るい赤, 92: 明るい緑, 93: 黄色, 94: 明るい青, 95: 明るい紫, 96: ターコイズ, 97: 白


lsコマンドの表示形式を変える

~/.bashrcに以下を追加
----------
alias lsl="ls -l --time-style=long-iso"
alias lsal="ls -al --time-style=long-iso"
----------
こんな感じ


Vimの設定

Vim初心者に捧ぐ実践的入門

以下の内容の.vimrcを作る
$ gedit .vimrc
----------
filetype plugin indent on
syntax on
set nowrap
set hlsearch
set ignorecase
set smartcase
set autoindent
set ruler
set number
set list
set wildmenu
set showcmd
set shiftwidth=4
set softtabstop=4
set expandtab
set tabstop=4
set smarttab
set clipboard=unnamed
----------


エディタをインストール

1. gedit
$ sudo apt install gedit gedit-plugins

2. leafpad
$ sudo apt install leafpad
* Ubuntu20ではleafpadが無いのでplumaを入れる
$ sudo apt install pluma
~/.bashrcに以下を追加
----------
alias leafpad="pluma"
----------

plumaの文字化け対策 [2020/7/23追記]
https://linuxfan.info/pluma-editor
$ gsettings set org.mate.pluma auto-detected-encodings "['UTF-8', 'CURRENT', 'CP932', 'EUC-JP-MS', 'ISO-2022-JP', 'ISO-8859-15', 'UTF-16']"
$ gsettings set org.mate.pluma shown-in-menu-encodings "['CP932', 'EUC-JP-MS', 'ISO-2022-JP', 'ISO-8859-15', 'UTF-16']"

.txtファイルとplumaを関連付る
ファイルブラウザーで拡張子が「.txt」のファイルをダブルクリックした時に、geditではなくplumaが起動するよう設定するには、拡張子「.txt」のファイルを右クリックし、「プロパティ」を選択します。そして、「開き方」のタブに切り替え、「Pluma」を選択して「デフォルトに設定する」をクリックします。

gedit/leafpadで文字列の範囲指定が出来ない場合はXLaunchのclipboardに関する部分のチェックを外します。

config.xlaunch
----------
<?xml version="1.0" encoding="UTF-8"?>
<XLaunch WindowMode="MultiWindow" ClientMode="NoClient" LocalClient="False" Display="-1" LocalProgram="xcalc" RemoteProgram="xterm" RemotePassword="" PrivateKey="" RemoteHost="" RemoteUser="" XDMCPHost="" XDMCPBroadcast="False" XDMCPIndirect="False" Clipboard="False" ClipboardPrimary="False" ExtraParams="-ac" Wgl="True" DisableAC="True" XDMCPTerminate="False"/>
----------


Windows Terminalが閉じない

Windows Terminalが[プロセスはコード 130 で終了しました]と表示されて閉じる事が出来なくなった場合は「settings.json」に"closeOnExit": "always"を追加する。
----------
"defaults":
        {
            "acrylicOpacity": 0.80000000000000004,
            "font":
            {
                "face": "HackGenNerd Console",
                "size": 12
            },
            "useAcrylic": true,
            "closeOnExit": "always"
----------


ファイラーnautilusをインストール

$ sudo apt install nautilus

* 起動すると.gtk-bookmarksが無いとエラー表示されるのでダミーで作る。
$ touch .gtk-bookmarks

* フォルダーに色を付ける(色を変更しようとするとエラーが出るが)

$ sudo add-apt-repository ppa:costales/folder-color
$ sudo apt update
$ sudo apt install folder-color


ファイラーnemoをインストール

$ sudo apt install nemo

nemoを標準のファイルマネージャーに設定
$ xdg-mime default nemo.desktop inode/directory application/x-gnome-saved-search
$ gsettings set org.gnome.desktop.background show-desktop-icons false
$ gsettings set org.nemo.desktop show-desktop-icons true

nautilusに戻す
$ xdg-mime default nautilus.desktop inode/directory application/x-gnome-saved-search
$ gsettings set org.nemo.desktop show-desktop-icons false
$ gsettings set org.gnome.desktop.background show-desktop-icons true


MACのQuick Lookみたいな物をインストールする

Get macOS ‘Quick Look’ on Ubuntu with GNOME Sushi

ファイルを選択してSPACEキーを押すとファイル内容や画像を表示してくれる
$ sudo apt install gnome-sushi


uimをインストールして日本語入力できるようにする

$ sudo apt install -y uim-fep uim-anthy

uimの設定ファイル .uim を作る(Ctrl+Spaceで日本語入力の切り替え)
全角/半角で切り替えるように変更(最後の2行は何か不明)
----------
(define default-im-name 'anthy)
(define-key generic-on-key? '("Henkan_Mode" "zenkaku-hankaku" "<Control> " "<Control>\\"))
(define-key generic-off-key? '("Muhenkan" "zenkaku-hankaku" "<Control> " "<Control>\\"))
(define-key anthy-extend-segment-key? '("<Control>o"))
(define-key anthy-shrink-segment-key? '("<Control>i"))
----------

・~/.bashrcに以下の行を追加
----------
export XIM=uim
export XMODIFIERS=@im=uim
export UIM_CANDWIN_PROG=uim-candwin-gtk
export GTK_IM_MODULE=uim
export QT_IM_MODULE=uim
----------


python, Powerlineをインストールする

$ sudo apt update
$ sudo apt upgrade
* gitはインストールしてあるばず
$ sudo apt install git
$ git clone https://github.com/yyuu/pyenv.git ~/.pyenv
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
$ echo 'eval "$(pyenv init -)"' >> ~/.bashrc
$ source ~/.bashrc
$ sudo apt install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev
$ sudo apt install libffi-dev
$ pyenv install 3.8.3
$ pyenv global 3.8.3
$ git clone https://github.com/b-ryan/powerline-shell
$ cd powerline-shell
$ sudo apt install python3-pip
$ pip install powerline-shell

~/.bashrcに追加
----------
function _update_ps1() {
    PS1=$(powerline-shell $?)
}

if [[ $TERM != linux && ! $PROMPT_COMMAND =~ _update_ps1 ]]; then
    PROMPT_COMMAND="_update_ps1; $PROMPT_COMMAND"
fi
----------

Powerline用の設定ファイル2本

$ mkdir -p ~/.config/powerline-shell && \
powerline-shell --generate-config > ~/.config/powerline-shell/config.json
$ leafpad ~/.config/powerline-shell/config.json
----------
{
  "segments": [
    "newline",
    "virtual_env",
    "ssh",
    "cwd",
    "git",
    "hg",
    "jobs",
    "newline",
    "root"
  ],
  "mode": "patched",
  "cwd": {
    "max_depth": 5
  },
  "theme": "~/.config/powerline-shell/themes/soft-era.py",
  "vcs": {
    "show_symbol": "true"
  }
}
----------

$ mkdir  ~/.config/powerline-shell/themes
$ leafpad ~/.config/powerline-shell/themes/soft-era.py
----------
# this theme file placed in "~/.config/powerline-shell/themes/soft-era.py"
# this is a powerline shell theme for use with soft-era iTerm2 theme: https://github.com/soft-aesthetic/soft-era-iterm2

# dark colors:
# 0  black
# 1  darker red (salmon)
# 2  green
# 3  light pink
# 4  blue
# 5  violet?
# 6  purple
# 7  light bg color

# light colors:
# 8  deep purple
# 9  lighter read (coral)
# 10 green
# 11 yellow
# 12 blue
# 13 violet?
# 14 purple
# 15 white

from powerline_shell.themes.default import DefaultColor

class Color(DefaultColor):
    # USERNAME_FG = 15
    # USERNAME_BG = 6
    # USERNAME_FG = 15
    # USERNAME_BG = 13
    USERNAME_FG = 15
    USERNAME_BG = 13
    USERNAME_ROOT_BG = 0

    # HOSTNAME_FG = 15
    # HOSTNAME_BG = 10
    # HOSTNAME_FG = 15
    # HOSTNAME_BG = 14
    # HOSTNAME_FG = 3
    # HOSTNAME_BG = 14
    HOSTNAME_FG = 0
    HOSTNAME_BG = 4

    HOME_SPECIAL_DISPLAY = False
    HOME_BG = 4
    HOME_FG = 0
    PATH_FG = 0
    PATH_BG = 4
    CWD_FG = 0
    SEPARATOR_FG = 14

    READONLY_BG = 0
    READONLY_FG = 15

    SSH_BG = 0
    SSH_FG = 15

    REPO_CLEAN_FG = 0
    REPO_CLEAN_BG = 7
    REPO_DIRTY_FG = 5
    REPO_DIRTY_BG = 7

    JOBS_FG = 4
    JOBS_BG = 7

    CMD_PASSED_FG = 15
    CMD_PASSED_BG = 2
    CMD_FAILED_FG = 15
    CMD_FAILED_BG = 1

    SVN_CHANGES_FG = REPO_DIRTY_FG
    SVN_CHANGES_BG = REPO_DIRTY_BG

    GIT_AHEAD_BG = 7
    GIT_AHEAD_FG = 4
    GIT_BEHIND_BG = 7
    GIT_BEHIND_FG = 6
    GIT_STAGED_BG = 7
    GIT_STAGED_FG = 2
    GIT_NOTSTAGED_BG = 7
    GIT_NOTSTAGED_FG = 5
    GIT_UNTRACKED_BG = 7
    GIT_UNTRACKED_FG = 5
    GIT_CONFLICTED_BG = 7
    GIT_CONFLICTED_FG = 1
    GIT_STASH_BG = 7
    GIT_STASH_FG = 6

    VIRTUAL_ENV_BG = 7
    VIRTUAL_ENV_FG = 2

    BATTERY_NORMAL_BG = 7
    BATTERY_NORMAL_FG = 2
    BATTERY_LOW_BG = 7
    BATTERY_LOW_FG = 1

    AWS_PROFILE_FG = 15
    AWS_PROFILE_BG = 2

    TIME_FG = 15
    TIME_BG = 10
----------


WSLでWindowsのPATHを引き継がないようにする方法

https://qiita.com/raccy/items/456a7158f588670c0850

$ print $PATH
とすると大量にエラーが出る。上のリンクの記事に従って設定してみる

$ sudo pluma /etc/wsl.conf
----------
# WindowsのPATHを引き継がない
[interop]
appendWindowsPath = false
----------


WSLを再起動する

管理者権限で、LxssManagerサービスを再起動すれば、Windows再起動無しに、WSLを再起動できます。

Windows側に「wslreboot.bat」というバッチファイルを作りました。
----------
@echo off
cd /d %~dp0
for /f "tokens=3 delims=\ " %%i in ('whoami /groups^|find "Mandatory"') do set LEVEL=%%i
if NOT "%LEVEL%"=="High" (
@powershell -NoProfile -ExecutionPolicy unrestricted -Command "Start-Process %~f0 -Verb runas"
exit
)
net stop LxssManager
net start LxssManager
----------


ディストリビューションのインポート・エクスポート

https://forest.watch.impress.co.jp/docs/serial/yajiuma/1220926.html

「PowerShell」でエクスポートを行う
PS> wsl --export PerfectWSLDistro ./PerfectWSLDistro.tar

「PowerShell」でインポートを行う
PS> mkdir ~/AppData/Local/PerfectDistro
wsl --import PerfectDistro ~/AppData/Local/PerfectDistro ./PerfectWSLDistro.tar --version 2

エクスポートが完了したら、“wsl --list -v”コマンドでちゃんと移行が成功しているか確認
PS> wsl --list -v

Linuxbrewのインストール

公式サイト
Linuxbrewのススメ
WSL(Ubuntu 18.04)でHomebrewを使う

"Linuxbrew is a fork of Homebrew, the Mac OS package manager, for Linux." by Linuxbrew:OS XのHomebrewをLinux環境でも使えるようにしたもの

必要な依存関係をインストール
* すべて必要かどうかは不明
$ sudo apt install build-essential curl git m4 ruby texinfo libbz2-dev libcurl4-openssl-dev libexpat-dev libncurses-dev zlib1g-dev -y
$ sudo apt install gettext -y

Homebrew本体のインストール
$ sh -c "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install.sh)"

PATHに追加
$ test -d ~/.linuxbrew && eval $(~/.linuxbrew/bin/brew shellenv)
$ test -d /home/linuxbrew/.linuxbrew && eval $(/home/linuxbrew/.linuxbrew/bin/brew shellenv)
$ test -r ~/.bash_profile && echo "eval \$($(brew --prefix)/bin/brew shellenv)" >>~/.bash_profile
$ echo "eval \$($(brew --prefix)/bin/brew shellenv)" >>~/.profile

doctorに診断してもらう
$ brew doctor

動作確認
$ brew install sl
$ sl
* SLが走った

使い方
インストール
$ brew install フォーミュラ名
アンインストール
$ brew uninstall フォーミュラ名
フォーミュラの検索
$ brew search キーワード
インストール済みのパッケージを最新にする
$ brew upgrade
Homebrew自体を最新にする
$ brew update
インストール済みパッケージ一覧
$ brew list
brewに問題がないか調べる
$ brew doctor
古くなった fomura の削除
$ brew cleanup
* フォーミュラ(Formula):パッケージのこと。

2020-3-10 追記
別のマシンにインストールしたら
$ brew doctor
Please note that these warnings are just used to help the Homebrew maintainers
with debugging if you file an issue. If everything you use Homebrew for is
working fine: please don't worry or file an issue; just ignore this. Thanks!

Warning: umask is currently set to 000. Directories created by Homebrew cannot
be world-writable. This issue can be resolved by adding umask 002 to
your ~/.bash_profile
  echo 'umask 002' >> ~/.bash_profile
となったので、~/.bash_profileを作ったが、~/.bashrcをうまく読み込めない
仕方がないので ~/.bashrcに "umask 002" を追記


ubuntu-wsl - WSL上のUbuntuをもっと便利するメタパッケージ

$ sudo apt install ubuntu-wsl

コマンド
・wslusc: Windows 10デスクトップにショートカットを作成する
・wslsys: Windows 10またはLinuxのシステム情報を表示する
・wslfetch: システム情報をエレガントに表示する
・wslvar: Windowsのシステム環境変数を取得する
・wslview: デフォルトのWindowsブラウザでリンクを開くフェイクブラウザ
 例
$ wslview https://news.google.com


Windows TerminalでUbuntuが起動しない (Error 0x8007010b)

startingDirectoryの指定を止めるといい。
https://upgrade-windows10.blogspot.com/2021/09/windowsterminalubuntu.html


neofetch: システム情報を表示する

$ sudo apt install neofetch


explorer.exeでubuntuのディレクトリを開く

explorer.exeのアドレスバーに
\\wsl$
と入力する

*  WindowsのCドライブがLinuxの/mnt/cにマウントされている。/mnt/cにアクセスすることで、Windows上のファイルにアクセス可能。


ターミナルから画像を表示する

ビューアーfimをインストール
$ sudo apt install fim

画像を表示するときは
$ fim file name


Ubunrtuを22.04にアップデートする

下記のページに従ってやってみる
https://zenn.dev/ryuu/articles/upgrade-ubuntu2204-wsl

現行バージョンを確認
$ cat /etc/os-release

パッケージの依存解決
$ sudo apt update && sudo apt upgrade

ディストリビューションアップデートの確認
$ sudo apt dist-upgrade && sudo apt install update-manager-core

relese-upgradeの設定
# sudoでファイルを開く
$ sudo vim /etc/update-manager/release-upgrades
ファイルの一番下にPromptという項目があります。ここの値をltsに変更 (なってる)

アップグレードの実行
$ sudo do-release-upgrade -d

powerline-shellが機能しなくなったが、再インストールでなおった

アップグレード後のバージョンを確認
$ cat /etc/os-release

Windows TerminalはUbuntuを実行しているタブの名前は変えられないらしい


アップデート時に余分なメッセージが出るようになったので対策する。

I just installed Ubuntu 22.04 LTS for Windows Subsystem for Linux, but I'm having some issues. Every time I install new packages using sudo apt install, I will get 2 messages saying that:
> Failed to retrieve available kernel versions.
> Failed to check for processor microcode upgrades.

Short answer:
$ sudo -e /etc/needrestart/needrestart.conf
Uncomment and change the following settings:
$nrconf{kernelhints} = 0;
$nrconf{ucodehints} = 0;


一日1回出るメッセージを消す。

homeに.hushloginという空のファイルを作る
$ touch .hushlogin


zshシェルのインストール

$ sudo apt install zsh

zshを起動
$ zsh
設定ファイルをどうするか聞いてくるのでここは"q"で抜ける

Preztoをインストール
$ git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto"

ターミナルを再起動してzshを起動
$ zsh

ここも以下の通りに変える(順番は重要)
$ gedit ~/.zpreztorc
zstyle ':prezto:load' pmodule \
  'environment' \
  'terminal' \
  'editor' \
  'history' \
  'directory' \
  'spectrum' \
  'utility' \
  'git' \
  'python' \
  'ssh' \
  'completion' \
  'autosuggestions' \
  'history-substring-search' \
  'syntax-highlighting' \
  'prompt'

完成

zshの補完機能を有効化する
$ brew install zsh-completions

以下のメッセージが出たので従う

 To activate these completions, add the following to your .zshrc:

  if type brew &>/dev/null; then
    FPATH=$(brew --prefix)/share/zsh-completions:$FPATH

    autoload -Uz compinit
    compinit
  fi

You may also need to force rebuild `zcompdump`:

$ rm -f ~/.zcompdump; compinit

Additionally, if you receive "zsh compinit: insecure directories" warnings when attempting
to load these completions, you may need to run this:

$ chmod -R go-w '/home/linuxbrew/.linuxbrew/share/zsh'

シェルをzshへ切り替える
$ which zsh
/bin/zshと表示されたら
$ chsh -s /bin/zsh
* $ chsh -s $(which zsh)で出来るそうです
bashへ切り替える
$ chsh -s /bin/bash

スクリプトが大きくなってきたらコンパイル
$ zcompile ~/.zshrc


Powerlevel10kのインストール
$ git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ~/powerlevel10k
~/.zpreztorcのテーマを下記に変更
zstyle ':prezto:module:prompt' theme 'powerlevel10k'
テーマをカスタマイズする場合は
$ p10k configure
対応したフォントが必要です。私はWindows TerminalでHackGenNerd Consoleを使っています。


Oh My Zsh の導入 (現在使用せず)
* Oh My Zsh は zsh のマネージャーみたいなもの
$ git clone https://github.com/ohmyzsh/ohmyzsh.git ~/.oh-my-zsh
// backup the previous settings
* .zshrcが上書きされるが、以前のものは.zshrc.origとして保存される
$ cp ~/.zshrc ~/.zshrc.orig
$ cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc

プラグインの追加
zsh-syntax-highlighting: コマンドのハイライト表示
$ git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
zsh-completions: 自動補完
$ git clone https://github.com/zsh-users/zsh-completions ${ZSH_CUSTOM:=~/.oh-my-zsh/custom}/plugins/zsh-completions
zsh-autosuggestions: ターミナルのコマンド履歴に基づいてコマンド候補を表示、入力補完もする
$ git clone https://github.com/zsh-users/zsh-autosuggestions.git ${ZSH_CUSTOM:=~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions

~/.zshrc に下記の内容を追加
plugins=(
git
zsh-syntax-highlighting
zsh-completions
zsh-autosuggestions
)

autoload -U compinit && compinit -i

$ source ~/.zshrc
エラーが出たけど・・・
/home/hida/.oh-my-zsh/lib/completion.zsh:bindkey:13: no such keymap `menuselect'
----- completion.zsh -----
# should this be in keybindings?
bindkey -M menuselect '^o' accept-and-infer-next-history ←これ
zstyle ':completion:*:*:*:*:*' menu select


0 コメント: