• ベストアンサー

シェルスクリプトでの絶対パスの取得

UNIXのシェルスクリプトで、引数として渡された相対パスから絶対パスを取得するには、そうすればよいでしょうか。 cd 相対パス 変数=`pwd` これが一番普通のやり方でしょうか。 change directory しなくてもできる方法がないのかなあと思ったもので。

noname#15902
noname#15902

質問者が選んだベストアンサー

  • ベストアンサー
  • Lean
  • ベストアンサー率72% (435/603)
回答No.1

変数=`cd 相対パス ; pwd` とか。 LinuxにはないようですがOSによっては、realpath(1)コマンドというコマンドが存在し、「realpath 相対パス」で絶対パスを取得出来ます。 % realpath ../../../usr/local /usr/local

noname#15902
質問者

お礼

ご回答ありがとうございます。 realpath というのは私の環境にはありませんでした。

その他の回答 (2)

  • shinnkun
  • ベストアンサー率24% (11/45)
回答No.3

#2書いてから気づきました…ひょっとして「変数="$PWD/相対パス"」とか「変数=`pwd`"/相対パス"」が求める答えです?

noname#15902
質問者

お礼

ご回答ありがとうございます。

  • shinnkun
  • ベストアンサー率24% (11/45)
回答No.2

ksh, bashその他なら、いちいち環境変数に`pwd`を代入しなくても、"$PWD"環境変数が使えます。

関連するQ&A

  • shシェルで実行パスではなくファイルのパスを取得する方法

    pwdコマンドで、実行パスを取得する事は可能ですが、このパスはどこから呼び出されたかによって変化します。 そうではなく、どこから呼ばれても、そのSHファイルのパスを取得する方法を教えてください。 <例:ディレクトリ> dir_a/ | +-dir_b/ | +-pgm_a.sh <例:シェル> ##### pgm_a.sh ##### #!/bin/sh echo `pwd` ##### pgm_a.sh ##### <例:コマンド> > pwd dir_a > ./dir_b/pgm_a.sh dir_a > cd ./dir_b > ./pgm_a.sh dir_a/dir_b どこから呼ばれても、常にpgm_a.shのパスである。 「dir_a/dir_b/」を取得できるコマンドが知りたいです。 あるいはシステム変数のようなものでも構いません。 よろしくお願いします。

  • シェルスクリプトについて

    とあるUNIXサーバが1台あるとします。 でそのマシン上の管理プログラムが同一マシン上にある 「シェルスクリプト(bash)」をキックするとします。 となるとそのシェルスクリプトの実行者(?)は Unixにログオンしているユーザーになるのでしょうか?。 目的としてはそのログインしているユーザーの環境変数 をシェルから参照したいのですが・・ 考え方がWindowsなもので。。すみませんが よろしくお願いします。

  • シェルススクリプト内のパス指定について

    プログラムを実行するシェルスクリプト内に以下のように絶対パスで環境変数の設定用のシェルスクリプトが絶対パスで書かれているのですが、この場合だと環境が変わるたびにシェルスクリプト内のパスを書き換えなければなりません。 /dir1/dir2/dir3/setenv.sh 相対パスにすれば書き換える必要はなくなるのですが、お作法上は相対パスで書くことは問題ない(良いと)されているのでしょうか? ../../dir/setenv.sh

  • UNIXのシェルスクリプト

    UNIXのシェルスクリプトで以下のようなことをやりたいのですがいい方法を教えて下さい。 ファイルの中にある文字列があります。 たとえば”CURREND_DIR” この文字列をシェルスクリプトでカレントのディレクトリパスに変換したいのですが いい方法が思いつきません。 set dir_data = ‘pwd‘ sed -e ’s/CURRENT_DIR/$dir_data’ ファイル名 でできるかなと思ったのですが、”CURRENT_DIR”が”$dir_data”に置換されてしまいます。 さらにdirパスが”/”で区切られていることも問題のようです。

  • シェルスクリプト 自身のファイルパスを取得する方法

    基本的なことかもしれないのですが、教えて下さい。 シェルスクリプトをLinuxで作成しています。 シェルスクリプトを実行して、実行したスクリプトまでの絶対パスを取得したいのですが、方法がわかりません。 いろいろ調べて、 dirname $0 という方法で出来るような記述も見つけたのですが、$0ではスクリプト名を取得することしか出来ず、ファイルパスを取得することが出来ませんでした。 OS : Linux カーネル : 2.6 です。 他に必要な情報があれば教えて下さい。 よろしくお願いいたします。

  • シェルスクリプトで「ディレクトリが存在したら~する」の表現は?

    unixのシェルについて質問です。 「ディレクトリaaa配下に任意のディレクトリ(ファイルではなく何かしらのディレクトリ)が在ったらpwdする」 という条件式はどう書いたらよいのでしょうか? イメージとしては以下しか浮ばないんですが間違ってますよね… すみません、よろしくお願いいたします。 if [ -d aaa/*] then  pwd fi

  • 【シェルスクリプト】各ディレクトリで一番大きな数字

    シェルスクリプト(Ubuntu bash)にて 以下の様なディレクトリ構成で各ディレクトリで一番数字の大きなファイルのパスを取得したいです。 data --0001 ----1 ----2 ----3 --0002 ----1 ----2 --0003 ----1 結果としてはこのように表示したいのですが、良い方法はありませんでしょうか。 data/0001/3 data/0002/2 data/0003/1

  • シェルスクリプト内のcdで、カレントディレクトリを変えるには?

    シェルスクリプト内のcdコマンドで、カレントディレクトリを変えるにはどうしたらいいか?をどうか教えて下さい。 MS-DOSのバッチファイル内で"cd XXXXX"と書き実行した時の動作を、UNIX(CygWin)環境でも行いたいです。 が、シェルスクリプトは(サブシェルで動く為)カレントディレクトリが変わってくれません。aliasコマンド等でいろいろ実験しましたが、DOSバッチファイルのように「バッチファイル単体でディレクトリ移動が出来る方法」を探し出せませんでした。 極めて初歩的とは存じますが、どうか宜しくお願い致します。

  • シェルスクリプトの書き方

    あるMakefileを作ったのですが、Makefileの中で同時にあるパスを通す処理を追記したいです。Makefileではタブを入れればシェルスクリプトと同様に普通にUNIXコマンドを実行出来るようなので、以下のように記載したのですが、動作しませんでした。どのようにすれば対処出来るでしょうか。 Makefileの内容 ... [tab]LD_LIBRARY_PATH=~/ [tab]export LD_LIBRARY_PATH ...

  • 相対パスか絶対パスって何?

    CGIサイト内検索を設置したいと思っていますが、相対パスか絶対パスって言う言葉が出てきます。 (例)path/にはsearch.cgiまでの相対パスか絶対パスが入ります。 相対パス・絶対パスとは何でしょう? サーバーにあるホームディレクトリのフルパスとは違うのですか? 教えてくださいお願いします。

    • 締切済み
    • CGI