web-dev-qa-db-ja.com

現在の作業ディレクトリを取得するにはどうすればよいですか?

現在の作業ディレクトリを変数に取得するスクリプトが必要です。ディレクトリが必要なセクションは次のようなものですdir = pwdpwdと表示されるだけです。現在の作業ディレクトリを変数に取得するにはどうすればよいですか?

205
Interesting...

それをする必要はありません、それはすでにin変数です:

_$ echo $PWD
/home/terdon
_

PWD変数は POSIXで定義 であり、すべてのPOSIX準拠シェルで機能します。

PWD

シェルおよびcdユーティリティによって設定されます。シェルでは、値は次のように環境から初期化されます。実行時にPWDの値が環境内のシェルに渡される場合、値は現在の作業ディレクトリの絶対パス名で、終了NULLバイトを含む{PATH_MAX}バイト以下であり、値には含まれません。ドットまたはドットドットのコンポーネントの場合、シェルはPWDを環境からの値に設定します。それ以外の場合、実行時に環境内のシェルにPWDの値が渡され、その値は現在の作業ディレクトリの絶対パス名であり、値にはドットまたはドットドットであるコンポーネントが含まれていなければ、シェルがPWDを環境からの値に設定するか、PWDをpwd -Pによって出力されるパス名に設定するかは指定されていません。それ以外の場合、shユーティリティはPWDをpwd -Pによって出力されるパス名に設定します。 PWDが環境からの値に設定されている場合、値には、シンボリックリンクタイプのファイルを参照するコンポーネントを含めることができます。 PWDがpwd -Pによって出力されるパス名に設定されている場合、現在の作業ディレクトリまたはそのディレクトリの親に対して、そのパス名を決定するための十分な権限がない場合、PWDの値は不特定。この変数への割り当ては無視される場合があります。アプリケーションがPWDの値を設定または設定解除する場合、cdおよびpwdユーティリティの動作は指定されていません。


より一般的な答えとして、コマンドの出力を変数に保存する方法は、コマンドを$()または_` `_(バックティック)で囲むことです。

_var=$(command)
_

または

_var=`command`
_

2つのうち、$()のような複雑なコマンドを簡単に作成できるため、command0 $(command1 $(command2 $(command3)))が推奨されます。

305
terdon

dir=$(pwd)

これは移植性が高く、バックティックメソッドよりも優先されます。

$()を使用すると、コマンドをネストできます

例:mech_pwd=$(pwd; echo in $(hostname))

30
Govind Kailas

環境変数$PWDを使用するか、次のように記述します。

dir=`pwd`
11
chrk

pwdコマンドの出力を変数に保存するには、コマンド置換を使用する必要があります。コマンド置換では、バックティックまたはドル記号を使用できます。このような:

$ mkdir "/tmp/new dir"
$ cd "/tmp/new dir"
$ CWD="$(pwd)"
$ echo $CWD
/tmp/new dir
$ cd ~
$ echo $CWD
/tmp/new dir
$ pwd
/home/ja
5

現在の作業ディレクトリの値は異なる場合があります。シンボリックリンクを使用して現在のディレクトリを取得した場合、pwdは/ usr/bin/pwdとは異なる結果を返します。あなたがbashを使用しているので、私は以下を使用します:

dir=$(/usr/bin/pwd)

またはコメント通り:

dir=$(pwd -P)

ネストできないので、逆引用符は好きではありません。

1
Robert Jacobs