明らかに私はpwd
とreadlink
について知っていますが、現在のディレクトリへのreal絶対パス(つまり、リンクとドットの解決)を見つけるコマンドはありますか?
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
使用する
$ 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 the
POSIXLY_CORRECTを使用し、環境変数が設定されています。
Pythonも機能します:
python -c "import os; print(os.path.realpath('.'))"