1. ホーム
  2. macos

[解決済み] OS XでのBashスクリプトの絶対パス

2022-06-29 05:50:02

質問

OS X上で現在実行中のスクリプトの絶対パスを取得しようとしています。

私は、多くの返信が readlink -f $0 . しかし、OS X の readlink は BSD のものと同じなので、これは動作しません (GNU のバージョンでは動作します)。

これに対するすぐに使える解決策はあるのでしょうか?

どのように解決するのですか?

このページには realpath() C関数がありますが、コマンドラインでは何も見当たりません。以下に、簡単で汚い置換方法を示します。

#!/bin/bash

realpath() {
    [[ $1 = /* ]] && echo "$1" || echo "$PWD/${1#./}"
}

realpath "$0"

で始まっている場合、そのパスをそのまま表示します。 / . そうでない場合は、相対パスでなければならないので、先頭に $PWD を前につける。このとき #./ の部分が剥き出しになり ./ の前面から $1 .