Linux で realpath などが入っていない状況で 相対パスから絶対パスを取得するための シェルスクリプトです。
#!/bin/bash # ========================================================== # 絶対パス取得コマンド # ----------------------------------------------------- # create : 2010/01/07 Studio ODIN # update : # ========================================================== # --- init --------------------------------------------- COMMAND_NAME=fullpath CUR_DIR=`pwd` # -- args ---------------------------------------------- TARGET_OBJECT=$1 # -- args check ---------------------------------------- if [ "$TARGET_OBJECT" = "" ]; then pwd exit 0 fi if [ ! -e "$TARGET_OBJECT" ]; then echo "Error: '$TARGET_OBJECT' is not exists." >&2 exit 1 fi # -- get full path (is directory) ---------------------- if [ -d $TARGET_OBJECT ]; then cd $TARGET_OBJECT pwd exit 0 fi # -- get full path (is not directory) ------------------ cd `dirname $TARGET_OBJECT` TARGET_PATH=`pwd` TARGET_NAME=`basename $TARGET_OBJECT` if [ "$TARGET_PATH" = "/" ]; then echo $TARGET_PATH$TARGET_NAME else echo $TARGET_PATH/$TARGET_NAME fi # -- normal end ---------------------------------------- cd $CUR_DIR exit 0 # ========================================================== # shell end # location: /usr/local/bin/fullpath # ==========================================================
次の例は、fullpath という名前で /usr/local/bin に作成して実行権限を付けています。 環境に合わせて変更してください。
# cd /usr/local/bin # vi fullpath # chmod 755 fullpath
引数を指定しなければ、カレントディレクトリのパス、 ディレクトリやファイルを指定すれば、その絶対パスを返します。
$ fullpath /home/odin $ fullpath ../ /home $ fullpath / / $ fullpath ../../vmlinuz /vmlinuz