現在実行されているスクリプトファイルの絶対ファイル名を取得したいのですが。リンクも解決する必要があります。
Linuxでは、これは次のように行われるようです。
$(readlink -mn "$0")
しかし、readlink
は動作するようですvery Mac OS Xでは動作が異なります。
これは以下を使用して行われることを読みました
$(realpath $0)
bSDではそれも機能しません。 Mac OS Xにはrealpath
がありません。
何か案が?
私は、まさにこのことのために、Perlをだまして使用します。
#!/bin/bash
dirname=`Perl -e 'use Cwd "abs_path";print abs_path(shift)' $0`
echo $dirname
私はスクリプト全体をPerlで書くだけだと思いますが、いつもそうとは限りません。
#!/usr/bin/env bash
scriptDir="$(cd "$(dirname "$0")" && pwd -P)"
別のアプローチ:
# Install.
brew install coreutils
# Use the GNU variant.
grealpath --help
これはシンボリックリンクのコンボを処理し、ファイルとフォルダーで機能します:
#!/usr/bin/env bash
realpath()
{
if ! pushd $1 &> /dev/null; then
pushd ${1##*/} &> /dev/null
echo $( pwd -P )/${1%/*}
else
pwd -P
fi
popd > /dev/null
}
しかし、それはrealpathの--relative-toをサポートしていません。これには、変換 ここで説明 が必要です。