No.034ファイルとフォルダ
realpath
リアルパス・実体パス正規化
パスを絶対化し、.や..、シンボリックリンクを整理して正規化された経路を表示します。比較、基準化、自動化で便利です。
答えよく使う形
$ realpath ./.
/tmp/realpath-demo
$ realpath -m ./missing/../a
/tmp/realpath-demo/a
$ realpath ./script.sh
練習用の部屋です。何を打っても本物は変わりません。本物の Linux で続ける →
どんなコマンド?
相対パスを安定した絶対パスにそろえたい時、同じ実体かどうか比較したい時、スクリプトの起点ディレクトリを決めたい時に使います。
realpathは、与えられたパスを正規化し、分かりやすい絶対パスへ変換するコマンドです。相対要素の.や..を整理し、必要に応じてシンボリックリンクをたどることで、同じ場所を指す複数表記を一つにそろえられます。
実務では、スクリプトの基準ディレクトリを固定したい時、ユーザー入力のパスを比較可能な形へそろえたい時、複数の参照経路が本当に同じ実体か確認したい時に便利です。dirnameやbasenameと組み合わせると、構成ファイルの所在計算が読みやすくなります。
ただし、どこまで存在を要求するかで挙動が変わります。存在を厳密に求めるか、存在しない末尾も含めて正規化したいかを、-eや-mで明示して使い分けると事故が減ります。
書き方とオプション
組み立ててみるオプションを押すと、下の1行に足されます。もう一度押すと外れます。
$ realpath
使用例と実行結果
行を押すとコピーできます。
/tmp/realpath-demo
/tmp/realpath-demo/a
まず安全に試す
3分ミッション
手を動かすと覚えやすくなります。できたものに印を付けてください(この端末に残ります)。
0 / 2
つまずいたとき
realpathで失敗する
原因-e相当の存在要件に対し、途中または末尾の要素が存在しません。
こうする存在確認後に実行するか、用途に応じて-mを使います。
リンク先を残したまま字面だけ整えたかった
原因既定でリンク解決まで進む実装を使っています。
こうする必要なら-sで字面中心の正規化を選びます。
終わったときの数(戻り値)
$ echo $?
- 0正常終了。指定条件で正規化パスを表示できました。
- >0存在要件を満たさない、解決できない、オプション不正などで失敗しました。
気をつけることと入れ方
危険度は低いですが、存在要件を誤ると想定外の失敗や、逆に存在しない経路をあたかも有効な経路として扱う原因になります。用途に応じて-eと-mを使い分けてください。
環境による違い
realpathはGNU系やBSD系で使えますが、POSIXの中核標準ではありません。-eや-m、-sの挙動は実装差があるため、移植性が必要なスクリプトでは事前確認が必要です。
確かめた環境2026-04-09 に確認
よくある質問
readlink -fとほぼ同じですか。
似ていますが、realpathは正規化結果を得る意図が明確で、存在要件の制御もしやすい道具です。
存在しない出力先の親パス計算にも使えますか。
はい。-mを使うと、存在しない末尾を含む場合でも整理に使えます。
realpath を最後まで読みました。
Linux コマンド辞典に戻る93 / 144