現在の作業ディレクトリを取得する方法は? [コピー]

現在の作業ディレクトリを取得する方法は? [コピー]

現在の作業ディレクトリを変数に渡すスクリプトが必要です。ディレクトリが必要な部分はこんな感じですdir = pwdpwd現在の作業ディレクトリを変数に入れる方法のみを印刷します。

ベストアンサー1

そうする必要はありません。存在する変数:

$ echo "$PWD"
/home/terdon

変数PWDPOSIXで定義すべてのPOSIX互換シェルで動作します。

障害者

シェルとCDユーティリティで設定されます。シェルでは、次のように環境で値を初期化する必要があります。 PWD値が実行時に環境のシェルに渡される場合、値は現在の作業ディレクトリの絶対パス名であり、{PATH_MAX}バイト(終了nullバイトを含む)を超えず、値には次のものは含まれません。ポイントまたはポイントポイントコンポーネントの場合、シェルは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)")")"

対応するバックティックは次のとおりです。

command0 "`command1 \"\`command2 \\\"\\\`command3\\\`\\\"\`\"`"

おすすめ記事