はじめに

Linuxでの作業効率を大幅に向上させる方法の一つが、シェル環境のカスタマイズです。毎日何度も目にするプロンプト、繰り返し入力するコマンド、プロジェクトごとに必要な環境変数。これらを自分好みに設定することで、ターミナル作業がより快適で効率的になります。

本記事では、bashとzshの設定ファイルの仕組みから、エイリアスや関数による作業効率化、プロンプトのカスタマイズ、さらにはOh My ZshやStarshipといったモダンなツールの導入まで、Linuxシェル環境のカスタマイズ方法を体系的に解説します。

この記事を読み終える頃には、自分だけのシェル環境を構築し、日々の作業効率を大幅に向上させられるようになるでしょう。

前提条件と実行環境

本記事の内容は以下の環境で動作確認しています。

項目 バージョン・条件
OS Ubuntu 22.04 LTS / CentOS Stream 9
bash 5.1以上
zsh 5.8以上
前提知識 基本的なLinuxコマンド操作

WSL2(Windows Subsystem for Linux)やmacOSのターミナルでも同様の設定が可能です。

シェル設定ファイルの読み込み順序

シェル環境をカスタマイズする前に、設定ファイルがどの順序で読み込まれるかを理解することが重要です。bashとzshでは読み込まれるファイルと順序が異なります。

bashの設定ファイル

bashは「ログインシェルかどうか」と「インタラクティブシェルかどうか」によって、読み込む設定ファイルが変わります。

flowchart TD
    A[bashの起動] --> B{ログインシェル?}
    B -->|Yes| C[/etc/profile]
    C --> D[~/.bash_profile<br>~/.bash_login<br>~/.profile<br>のいずれか1つ]
    B -->|No| E{インタラクティブシェル?}
    E -->|Yes| F[~/.bashrc]
    E -->|No| G[BASH_ENV変数で<br>指定されたファイル]
    D --> H[シェル終了時]
    F --> H
    G --> H
    H --> I[~/.bash_logout<br>ログインシェルのみ]

主要なbash設定ファイルの役割を整理します。

ファイル 読み込み条件 主な用途
/etc/profile ログインシェル起動時 システム全体の環境設定
~/.bash_profile ログインシェル起動時 ユーザー固有のログイン設定
~/.bashrc インタラクティブな非ログインシェル エイリアス、プロンプト設定など
~/.bash_logout ログインシェル終了時 終了時の処理(ログなど)

一般的なベストプラクティスとして、~/.bash_profileから~/.bashrcを読み込むように設定します。

1
2
3
4
# ~/.bash_profile
if [ -f ~/.bashrc ]; then
    source ~/.bashrc
fi

zshの設定ファイル

zshはbashよりも多くの設定ファイルを持ち、より細かい制御が可能です。

flowchart TD
    A[zshの起動] --> B[/etc/zshenv<br>~/.zshenv]
    B --> C{ログインシェル?}
    C -->|Yes| D[/etc/zprofile<br>~/.zprofile]
    D --> E{インタラクティブ?}
    C -->|No| E
    E -->|Yes| F[/etc/zshrc<br>~/.zshrc]
    F --> G{ログインシェル?}
    E -->|No| H[シェル実行]
    G -->|Yes| I[/etc/zlogin<br>~/.zlogin]
    G -->|No| H
    I --> H
    H --> J[シェル終了]
    J --> K{ログインシェル?}
    K -->|Yes| L[~/.zlogout<br>/etc/zlogout]
    K -->|No| M[終了]
    L --> M

主要なzsh設定ファイルの役割を整理します。

ファイル 読み込み条件 主な用途
~/.zshenv 常に読み込まれる すべてのzshで必要な環境変数
~/.zprofile ログインシェル ログイン時のコマンド実行
~/.zshrc インタラクティブシェル エイリアス、関数、プロンプト設定
~/.zlogin ログインシェル(zshrc後) ログイン後の処理
~/.zlogout ログインシェル終了時 終了時の処理

現在のシェルを確認する

自分が使用しているシェルを確認する方法です。

1
2
3
4
5
6
7
8
# 現在のシェルを確認
echo $SHELL

# 実行中のシェルを確認
echo $0

# 利用可能なシェル一覧
cat /etc/shells

デフォルトシェルを変更するには、chshコマンドを使用します。

1
2
# zshに変更する例
chsh -s /bin/zsh

エイリアスの定義

エイリアスは、長いコマンドや頻繁に使用するコマンドに短い別名を付ける機能です。作業効率を向上させる最も手軽なカスタマイズ方法です。

エイリアスの基本構文

エイリアスは~/.bashrcまたは~/.zshrcに記述します。

1
2
3
4
5
6
7
# 基本構文
alias エイリアス名='コマンド'

# 例:よく使うオプションを付けたコマンド
alias ll='ls -la'
alias la='ls -A'
alias l='ls -CF'

実用的なエイリアスの例

日常的に役立つエイリアスの設定例を紹介します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# ディレクトリ移動を効率化
alias ..='cd ..'
alias ...='cd ../..'
alias ....='cd ../../..'

# よく使うディレクトリへのショートカット
alias proj='cd ~/projects'
alias docs='cd ~/Documents'

# 安全なファイル操作(確認プロンプトを表示)
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

# ファイル一覧の色付け
alias ls='ls --color=auto'
alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'

# Git関連のショートカット
alias gs='git status'
alias ga='git add'
alias gc='git commit'
alias gp='git push'
alias gl='git log --oneline --graph'
alias gd='git diff'

# Docker関連のショートカット
alias dps='docker ps'
alias dpsa='docker ps -a'
alias di='docker images'
alias dc='docker-compose'
alias dcu='docker-compose up -d'
alias dcd='docker-compose down'

# システム管理
alias update='sudo apt update && sudo apt upgrade -y'
alias ports='netstat -tulanp'
alias df='df -h'
alias du='du -h'
alias free='free -h'

# 履歴検索を便利に
alias h='history | grep'

# IPアドレスを確認
alias myip='curl -s ifconfig.me'
alias localip="ip addr show | grep 'inet ' | grep -v '127.0.0.1'"

エイリアスの管理

設定したエイリアスを確認・管理するコマンドです。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# すべてのエイリアスを表示
alias

# 特定のエイリアスを確認
alias ll

# エイリアスを一時的に無効化(コマンドの先頭にバックスラッシュ)
\rm filename  # rm のエイリアスを無視して実行

# エイリアスを削除
unalias ll

関数の定義

エイリアスでは実現できない複雑な処理には、シェル関数を使用します。関数は引数を受け取ったり、条件分岐を含めたりできます。

関数の基本構文

関数は~/.bashrcまたは~/.zshrcに記述します。

1
2
3
4
5
6
7
8
9
# 基本構文(bash/zsh共通)
関数名() {
    コマンド
}

# または
function 関数名 {
    コマンド
}

実用的な関数の例

日常的に役立つ関数の設定例を紹介します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# ディレクトリを作成して移動
mkcd() {
    mkdir -p "$1" && cd "$1"
}

# ファイルやディレクトリの詳細情報を表示
info() {
    if [ -d "$1" ]; then
        echo "ディレクトリ: $1"
        ls -la "$1"
        echo "サイズ: $(du -sh "$1" | cut -f1)"
    elif [ -f "$1" ]; then
        echo "ファイル: $1"
        ls -la "$1"
        echo "行数: $(wc -l < "$1")"
        file "$1"
    else
        echo "存在しません: $1"
    fi
}

# 指定した階層までのディレクトリツリーを表示
tree_depth() {
    local depth=${1:-2}
    find . -maxdepth "$depth" -type d | sed -e 's/[^\/]*\//|  /g' -e 's/|  \([^|]\)/|--\1/'
}

# プロセス検索
psgrep() {
    ps aux | grep -v grep | grep -i "$1"
}

# ファイル内容を検索
findtext() {
    grep -rn "$1" "${2:-.}"
}

# 圧縮ファイルを自動判別して展開
extract() {
    if [ -f "$1" ]; then
        case "$1" in
            *.tar.bz2) tar xjf "$1" ;;
            *.tar.gz)  tar xzf "$1" ;;
            *.tar.xz)  tar xJf "$1" ;;
            *.bz2)     bunzip2 "$1" ;;
            *.gz)      gunzip "$1" ;;
            *.tar)     tar xf "$1" ;;
            *.tbz2)    tar xjf "$1" ;;
            *.tgz)     tar xzf "$1" ;;
            *.zip)     unzip "$1" ;;
            *.Z)       uncompress "$1" ;;
            *.7z)      7z x "$1" ;;
            *.rar)     unrar x "$1" ;;
            *)         echo "'$1' は対応していない形式です" ;;
        esac
    else
        echo "'$1' は有効なファイルではありません"
    fi
}

# バックアップを作成
backup() {
    cp "$1" "$1.bak.$(date +%Y%m%d_%H%M%S)"
}

# HTTPサーバーを簡単に起動
serve() {
    local port=${1:-8000}
    echo "http://localhost:$port でサーバーを起動します"
    python3 -m http.server "$port"
}

# JSONを整形して表示
jsonpp() {
    if [ -f "$1" ]; then
        cat "$1" | python3 -m json.tool
    else
        echo "$1" | python3 -m json.tool
    fi
}

環境変数の設定

環境変数は、シェルやプログラムの動作を制御する重要な設定です。適切に設定することで、開発環境を効率的に構築できます。

環境変数の基本操作

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# 環境変数を設定(現在のシェルのみ)
export VARIABLE_NAME="value"

# 環境変数を確認
echo $VARIABLE_NAME
printenv VARIABLE_NAME

# すべての環境変数を表示
printenv
env

# 環境変数を削除
unset VARIABLE_NAME

主要な環境変数

よく使用される環境変数を理解しておきましょう。

環境変数 説明 設定例
PATH コマンド検索パス /usr/local/bin:/usr/bin:/bin
HOME ユーザーホームディレクトリ /home/username
USER 現在のユーザー名 username
SHELL デフォルトシェル /bin/bash
LANG ロケール設定 ja_JP.UTF-8
EDITOR デフォルトエディタ vim
TERM 端末タイプ xterm-256color
PS1 プロンプト文字列 \u@\h:\w\$
HISTSIZE 履歴保持数 10000
HISTFILESIZE 履歴ファイルサイズ 20000

開発環境の環境変数設定例

~/.bashrcまたは~/.zshrcに追加する環境変数の設定例です。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# ロケール設定
export LANG=ja_JP.UTF-8
export LC_ALL=ja_JP.UTF-8

# デフォルトエディタ
export EDITOR=vim
export VISUAL=vim

# 履歴設定
export HISTSIZE=10000
export HISTFILESIZE=20000
export HISTCONTROL=ignoreboth:erasedups  # 重複と空白開始を無視
export HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S "  # タイムスタンプを追加

# PATHの追加(優先度の高い順に追加)
export PATH="$HOME/.local/bin:$PATH"
export PATH="$HOME/bin:$PATH"

# 開発ツールの設定
# Node.js (nvm)
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && source "$NVM_DIR/nvm.sh"

# Python (pyenv)
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"

# Go
export GOPATH="$HOME/go"
export PATH="$GOPATH/bin:$PATH"

# Rust
source "$HOME/.cargo/env"

# Java
export JAVA_HOME="/usr/lib/jvm/java-17-openjdk-amd64"
export PATH="$JAVA_HOME/bin:$PATH"

# Docker
export DOCKER_BUILDKIT=1
export COMPOSE_DOCKER_CLI_BUILD=1

プロンプト(PS1)のカスタマイズ

プロンプトは、コマンド入力待ち状態を示す文字列です。カスタマイズすることで、現在の状態を一目で把握できるようになります。

bashのプロンプト設定

bashではPS1変数でプロンプトを設定します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# PS1で使用できる特殊文字
# \u - ユーザー名
# \h - ホスト名(最初の.まで)
# \H - 完全なホスト名
# \w - カレントディレクトリ(フルパス、ホームは~)
# \W - カレントディレクトリ(ベース名のみ)
# \d - 日付(Weekday Month Date形式)
# \t - 24時間形式の時刻(HH:MM:SS)
# \T - 12時間形式の時刻(HH:MM:SS)
# \@ - 12時間形式の時刻(am/pm)
# \A - 24時間形式の時刻(HH:MM)
# \n - 改行
# \$ - 一般ユーザーは$、rootは#
# \[ - 非表示文字列の開始
# \] - 非表示文字列の終了

シンプルなプロンプト設定例

1
2
3
4
5
6
7
# 基本的なプロンプト
PS1='\u@\h:\w\$ '
# 表示例: username@hostname:~/projects$

# 色付きのプロンプト
PS1='\[\e[32m\]\u@\h\[\e[0m\]:\[\e[34m\]\w\[\e[0m\]\$ '
# 表示例: (緑)username@hostname(白):(青)~/projects(白)$

ANSIカラーコード

プロンプトに色を付けるためのカラーコードです。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
# 基本的な色
# \e[30m - 黒
# \e[31m - 赤
# \e[32m - 緑
# \e[33m - 黄
# \e[34m - 青
# \e[35m - マゼンタ
# \e[36m - シアン
# \e[37m - 白
# \e[0m  - リセット(デフォルトに戻す)

# 太字
# \e[1;32m - 太字の緑

# 背景色
# \e[40m - 黒背景
# \e[41m - 赤背景
# \e[42m - 緑背景
# など

実用的なプロンプト設定

Git情報や終了ステータスを含む実用的なプロンプト設定例です。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
# ~/.bashrc に追加

# Gitブランチを取得する関数
parse_git_branch() {
    git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}

# 終了ステータスによる色変更
prompt_color() {
    if [ $? -eq 0 ]; then
        echo -e "\e[32m"  # 成功時は緑
    else
        echo -e "\e[31m"  # 失敗時は赤
    fi
}

# カスタムプロンプト
PS1='\[\e[36m\]\t \[\e[33m\]\u@\h\[\e[0m\]:\[\e[34m\]\w\[\e[35m\]$(parse_git_branch)\[\e[0m\]\n\[$(prompt_color)\]\$\[\e[0m\] '

# 表示例:
# 14:30:45 username@hostname:~/projects (main)
# $

zshのプロンプト設定

zshではPROMPT変数(またはPS1)でプロンプトを設定します。zsh独自の記法があります。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
# zshで使用できる特殊文字
# %n - ユーザー名
# %m - ホスト名(最初の.まで)
# %M - 完全なホスト名
# %~ - カレントディレクトリ(ホームは~)
# %/ - カレントディレクトリ(フルパス)
# %d - 日付
# %T - 24時間形式の時刻(HH:MM)
# %t - 12時間形式の時刻
# %D{format} - strftime形式の日時
# %# - 一般ユーザーは%、rootは#
# %? - 直前のコマンドの終了ステータス

# 色の指定
# %F{color} - 前景色の開始
# %f - 前景色のリセット
# %K{color} - 背景色の開始
# %k - 背景色のリセット
# %B / %b - 太字の開始/終了

zshでのプロンプト設定例です。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# ~/.zshrc に追加

# Gitブランチを表示
autoload -Uz vcs_info
precmd_vcs_info() { vcs_info }
precmd_functions+=( precmd_vcs_info )
setopt prompt_subst
zstyle ':vcs_info:git:*' formats ' (%b)'

# カスタムプロンプト
PROMPT='%F{cyan}%T%f %F{yellow}%n@%m%f:%F{blue}%~%f%F{magenta}${vcs_info_msg_0_}%f
%# '

# 右側のプロンプト(終了ステータス表示)
RPROMPT='%(?..%F{red}[%?]%f)'

Oh My Zshの導入

Oh My Zshは、zshの設定を管理するためのフレームワークです。豊富なプラグインとテーマにより、簡単に高機能なシェル環境を構築できます。

Oh My Zshのインストール

1
2
3
4
5
# curlを使用
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

# または wgetを使用
sh -c "$(wget -O- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

インストール後、~/.zshrcが自動的に作成されます。

テーマの設定

Oh My Zshには150以上のテーマが同梱されています。

1
2
3
4
# ~/.zshrc でテーマを設定
ZSH_THEME="robbyrussell"  # デフォルト
# ZSH_THEME="agnoster"    # 人気のテーマ
# ZSH_THEME="powerlevel10k/powerlevel10k"  # 高機能テーマ(別途インストール必要)

利用可能なテーマは以下で確認できます。

1
2
# テーマ一覧を表示
ls ~/.oh-my-zsh/themes/

プラグインの設定

Oh My Zshのプラグインで機能を追加できます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# ~/.zshrc でプラグインを設定
plugins=(
    git            # Gitコマンドのエイリアス
    docker         # Dockerコマンドの補完
    docker-compose # docker-composeの補完
    npm            # npmコマンドの補完
    node           # Node.jsの補完
    python         # Pythonの補完
    pip            # pipの補完
    sudo           # Escキー2回でsudoを追加
    history        # 履歴検索の強化
    extract        # 圧縮ファイルの自動展開
    z              # ディレクトリへの高速移動
    colored-man-pages  # manページの色付け
)

追加プラグインのインストール

コミュニティ製の人気プラグインを追加できます。

1
2
3
4
5
# zsh-autosuggestions(コマンド補完の提案)
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions

# zsh-syntax-highlighting(構文ハイライト)
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting

インストール後、~/.zshrcのplugins配列に追加します。

1
2
3
4
5
6
plugins=(
    git
    zsh-autosuggestions
    zsh-syntax-highlighting
    # その他のプラグイン
)

Starshipの導入

Starshipは、Rust製の高速でカスタマイズ可能なプロンプトです。bash、zsh、fish、PowerShellなど、多くのシェルに対応しています。

Starshipのインストール

1
2
3
4
5
6
7
8
# curlを使用(推奨)
curl -sS https://starship.rs/install.sh | sh

# Homebrew(macOS/Linux)
brew install starship

# apt(Ubuntu/Debian)- snapを使用
snap install starship

シェルへの設定

インストール後、各シェルの設定ファイルに初期化コマンドを追加します。

1
2
# ~/.bashrc の末尾に追加
eval "$(starship init bash)"
1
2
# ~/.zshrc の末尾に追加
eval "$(starship init zsh)"

Starshipの設定

Starshipの設定は~/.config/starship.tomlで行います。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# ~/.config/starship.toml

# プロンプト全体の設定
format = """
$username\
$hostname\
$directory\
$git_branch\
$git_status\
$nodejs\
$python\
$docker_context\
$line_break\
$character"""

# プロンプトの文字
[character]
success_symbol = "[➜](bold green)"
error_symbol = "[✗](bold red)"

# ディレクトリ表示
[directory]
truncation_length = 3
truncate_to_repo = true
style = "bold cyan"

# Gitブランチ
[git_branch]
symbol = " "
style = "bold purple"

# Gitステータス
[git_status]
conflicted = "⚔️ "
ahead = "⬆️ ${count}"
behind = "⬇️ ${count}"
diverged = "🔀 ⬆️${ahead_count} ⬇️${behind_count}"
untracked = "📁 "
stashed = "📦 "
modified = "📝 "
staged = "✅ "
renamed = "🔄 "
deleted = "🗑️ "

# Node.js
[nodejs]
symbol = " "
style = "bold green"

# Python
[python]
symbol = " "
style = "bold yellow"

# Docker
[docker_context]
symbol = " "
style = "bold blue"

# 時刻表示
[time]
disabled = false
format = '[$time]($style) '
style = "bold white"
time_format = "%H:%M"

# ユーザー名
[username]
style_user = "bold yellow"
style_root = "bold red"
format = "[$user]($style) "
show_always = false

# ホスト名
[hostname]
ssh_only = true
format = "[@$hostname]($style) "
style = "bold green"

Nerd Fontのインストール

StarshipやPowerlevel10kなどのモダンなプロンプトでアイコンを表示するには、Nerd Fontが必要です。

1
2
3
4
5
6
7
# Ubuntu/Debian
sudo apt install fonts-firacode

# または、手動でNerd Fontをダウンロード
# https://www.nerdfonts.com/font-downloads からダウンロード
# ~/.local/share/fonts/ に配置
fc-cache -fv

設定ファイルの管理

設定ファイルをバージョン管理することで、複数のマシン間で同じ環境を維持できます。

dotfilesリポジトリの作成

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
# dotfilesディレクトリを作成
mkdir -p ~/dotfiles

# 設定ファイルをコピー
cp ~/.bashrc ~/dotfiles/
cp ~/.zshrc ~/dotfiles/
cp ~/.config/starship.toml ~/dotfiles/

# シンボリックリンクを作成
ln -sf ~/dotfiles/.bashrc ~/.bashrc
ln -sf ~/dotfiles/.zshrc ~/.zshrc
ln -sf ~/dotfiles/starship.toml ~/.config/starship.toml

# Gitで管理
cd ~/dotfiles
git init
git add .
git commit -m "Initial dotfiles commit"

インストールスクリプトの作成

新しいマシンで環境を再現するためのスクリプトを作成しておくと便利です。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#!/bin/bash
# ~/dotfiles/install.sh

DOTFILES_DIR="$HOME/dotfiles"

# シンボリックリンクを作成
create_symlinks() {
    ln -sf "$DOTFILES_DIR/.bashrc" "$HOME/.bashrc"
    ln -sf "$DOTFILES_DIR/.zshrc" "$HOME/.zshrc"
    mkdir -p "$HOME/.config"
    ln -sf "$DOTFILES_DIR/starship.toml" "$HOME/.config/starship.toml"
}

# Oh My Zshをインストール
install_ohmyzsh() {
    if [ ! -d "$HOME/.oh-my-zsh" ]; then
        sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended
    fi
}

# Starshipをインストール
install_starship() {
    if ! command -v starship &> /dev/null; then
        curl -sS https://starship.rs/install.sh | sh -s -- -y
    fi
}

# 実行
create_symlinks
install_ohmyzsh
install_starship

echo "セットアップが完了しました。シェルを再起動してください。"

トラブルシューティング

設定が反映されない場合

1
2
3
4
5
6
7
8
# bashの場合、設定を再読み込み
source ~/.bashrc

# zshの場合
source ~/.zshrc

# または新しいシェルを起動
exec $SHELL

文字化けする場合

1
2
3
4
5
6
# ロケールの確認
locale

# UTF-8に設定
export LANG=ja_JP.UTF-8
export LC_ALL=ja_JP.UTF-8

プロンプトのアイコンが表示されない場合

Nerd Fontがインストールされているか確認し、ターミナルエミュレータのフォント設定を変更します。

1
2
3
4
5
# フォントの確認
fc-list | grep -i nerd

# フォントキャッシュの更新
fc-cache -fv

まとめ

本記事では、Linuxシェル環境のカスタマイズについて、設定ファイルの読み込み順序から実用的な設定例まで幅広く解説しました。

主なポイントを振り返ります。

  • シェル設定ファイルは読み込み順序を理解することが重要
  • エイリアスと関数で日常的なコマンド操作を効率化
  • 環境変数の適切な設定で開発環境を整備
  • PS1のカスタマイズで必要な情報を一目で把握
  • Oh My ZshやStarshipでモダンなシェル環境を構築
  • dotfilesをGitで管理して複数マシンで環境を共有

シェル環境のカスタマイズは一度設定すれば長く使えるため、時間をかけて自分好みに調整する価値があります。まずはエイリアスから始めて、徐々にプロンプトや関数を追加していくことをおすすめします。

参考リンク