web-dev-qa-db-ja.com

実際の現在のディレクトリ

明らかに私はpwdreadlinkについて知っていますが、現在のディレクトリへのreal絶対パス(つまり、リンクとドットの解決)を見つけるコマンドはありますか?

3
Jonathan H
pwd -P

(任意のPOSIXシェルで)は、探しているコマンドです。

-P物理論理-L、デフォルト)とは対照的に)pwdは主に$PWDのコンテンツをダンプします(シェルはこれに基づいて維持しますcdまたはpushd))に与える引数。

$ ln -s . /tmp/here
$ cd /tmp/here/here
$ cd ../here/here
$ pwd
/tmp/here/here/here
$ pwd -P
/tmp
4

使用する

$ env pwd

または

$ /bin/pwd

変数POSIXLY_CORRECTが設定されていない限り、その場合は-Pを追加する必要があります。


詳細:

シェルにはpwdという組み込み関数があり、デフォルトではシェルの$PWDの値が出力されます。その際、logicalパス(デフォルトは-L)が含まれる場合があります。

ビルトインを(-P)で呼び出すか、外部の/bin/pwdを使用する場合:

$ ln -s . /tmp/here; cd /tmp/here/here/here

$ pwd
/tmp/here/here/here

$ pwd -P
/tmp

$ /bin/pwd 
/tmp

その理由は、外部の/bin/pwdがデフォルトで-Pオプションになっているためです。
info pwdから:

この実装は-P' as the default unless thePOSIXLY_CORRECTを使用し、環境変数が設定されています。

1
user79743

Pythonも機能します:

python -c "import os; print(os.path.realpath('.'))"
0
Jonathan H