ログインと同時にカレンダーを表示する(最短手順)
設定は ~/.bashrc の末尾に1行追加するだけです。
echo 'cal' >> ~/.bashrc
source ~/.bashrc
次回ログイン以降、ターミナルを開くたびに当月のカレンダーが表示されます。手動で編集する場合は ~/.bashrc の末尾に cal の1行を追記してください。
表示例:
7月 2026
日 月 火 水 木 金 土
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
実務で役立つ場面
サーバー作業では「今日は何日か」を確認してから操作を始める場面が多くあります。月次バッチの実行前、証明書の有効期限チェック前、定期メンテナンス作業の前など、日付の誤認が重大なミスにつながるケースです。
ある運用現場では、月末処理のスクリプトを1日早く実行してしまい、二重実行のリカバリ対応に数時間を費やしたという事例があります。ログイン直後にカレンダーが目に入る状態を作るだけで、この種のヒューマンエラーを減らせます。
3ヶ月表示・年間表示のオプション
前月・今月・来月の3ヶ月を並べて表示する -3 オプションが特に実用的です。締め切り管理や月をまたぐ作業計画を確認しながら操作できます。
# 前月・当月・翌月を並べて表示
cal -3
表示例:
6月 2026 7月 2026 8月 2026
日 月 火 水 木 金 土 日 月 火 水 木 金 土 日 月 火 水 木 金 土
1 2 3 4 5 6 1 2 3 4 1
7 8 9 10 11 12 13 5 6 7 8 9 10 11 2 3 4 5 6 7 8
14 15 16 17 18 19 20 12 13 14 15 16 17 18 9 10 11 12 13 14 15
21 22 23 24 25 26 27 19 20 21 22 23 24 25 16 17 18 19 20 21 22
28 29 30 26 27 28 29 30 31 23 24 25 26 27 28 29
30 31
年間カレンダーを一覧したい場合は cal -y を使います。ただしログイン時に毎回表示すると画面を大きく占有するため、必要なときだけ手動実行するほうが実用的です。曜日を縦軸に並べた横長フォーマットが好みであれば ncal -M(月曜始まり)も選択肢に入ります。cal も ncal も util-linux パッケージに含まれており、Ubuntu・Debian・AlmaLinux・Rocky Linux いずれの環境でも追加インストール不要で利用できます。
# 今年1年分を表示(必要時だけ手動実行推奨)
cal -y
# 縦型・月曜始まりで表示
ncal -M
.bashrc と .bash_profile の使い分け
~/.bashrc はインタラクティブな非ログインシェルで読み込まれます。GNOMEターミナルや tmux の新しいペインを開いた際に実行されるため、デスクトップ環境での作業が多い場合はこちらが適切です。
~/.bash_profile(または ~/.profile)はSSHログインなどのログインシェルで読み込まれます。多くのディストリビューションでは ~/.bash_profile の中で ~/.bashrc を読み込む記述が既に含まれているため、~/.bashrc だけに追記すれば両方のケースに対応できます。
# ~/.bash_profile にデフォルトで含まれる記述(多くのディストリで標準)
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
この記述がある環境では、~/.bashrc への追記だけでSSHログイン時にも反映されます。念のため grep bashrc ~/.bash_profile で確認してから編集してください。
SSH接続時のみ表示を絞る方法
ローカルのターミナルでは不要で、SSHログイン時だけカレンダーを出したい場合は、$SSH_CONNECTION 変数を使って条件分岐できます。
# ~/.bashrc に追記(SSH接続時のみ表示)
if [ -n "$SSH_CONNECTION" ]; then
cal -3
fi
$SSH_CONNECTION はSSHセッションでのみ設定される環境変数です。ローカルのターミナルエミュレータや su によるシェル切り替え時には空になるため、表示を抑制できます。
複数サーバーにまとめて適用する方法
管理対象が複数台ある場合、/etc/profile.d/ ディレクトリにスクリプトを置くとシステム全体のすべてのユーザーに適用できます。
# root権限で実行
sudo tee /etc/profile.d/show-calendar.sh << 'EOF'
if [ -n "$PS1" ] && [ -n "$SSH_CONNECTION" ]; then
cal -3
fi
EOF
sudo chmod 644 /etc/profile.d/show-calendar.sh
$PS1 の有無でインタラクティブシェルか判定し、$SSH_CONNECTION でSSH接続のみに絞っています。cron 経由の非インタラクティブ実行時には表示されないため、バッチ処理ログに余分な出力が混入する心配はありません。
Ansible などの構成管理ツールを使っている環境では、このファイルをテンプレートとして各ホストに配布するとメンテナンスが一元化されます。
注意: /etc/profile.d/ への書き込みには root または sudo 権限が必要です。共有サーバーやマルチテナント環境では、全ユーザーへの影響を事前にチームに確認してから適用してください。また、MOTD(/etc/motd)でカレンダー表示を行うディストリビューション固有の設定と競合する場合があるため、既存の設定を確認してから追加することを推奨します。
「コマンドは打てる。次は"現場で通用する型"を最短で身につけたい」——そんなあなたへ。
ネットの断片的なTipsをコピペするだけでは、体系的な運用スキルはなかなか積み上がりません。リナックスマスター.JPの無料メルマガ「リナマガ」では、現場で実際に使うLinuxサーバー運用の考え方を、順を追って実務目線でお届けしています。いま登録された方には、安全なサーバー構築の「型」をまとめた『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼント中です。
>> 図解60P『Linux入門マニュアル』を無料で受け取る
(メルマガ登録は10秒・いつでも解除OK)
※ 「独学の時間がもったいない」「プロから現場の技術を最短で学びたい」という本気の方には、2日で実務レベルが身につく初心者向けハンズオンセミナーもご用意しています。
