シンボリックリンクを試していますが、いくつかの問題が発生しています。 1つ目は、ディレクトリへのシンボリックリンクをたどって、シンボリックリンクに関するディレクトリではなく実際の作業ディレクトリを表示する方法です(たとえば、pwd
を使用する場合)。 2つ目は、シンボリックリンクに戻るのではなく、ファイルシステムの実際のディレクトリに「バックアップ」する方法です。
私のUbuntuの_man pwd
_から:
シェルには独自のバージョンのpwdがある場合があります
bash
を使用します。単純なpwd
コマンドは、シンボリックリンクに関するパスを提供します。それでも_/bin/pwd
_は実際のパスを返します。 cd
コマンドもbashに組み込まれています。
言い換えると、これはシェル固有です。
編集:thrigのコメント(以下を参照)は、私がこの行の下に書いたすべてのものよりも優れた代替手段のようです。
実際のディレクトリに「バックアップ」するには、cd "$(/bin/pwd)/.."
またはcd "$(/bin/pwd)"; cd ..
を試してください。 2番目の形式は、cd
のエイリアスを作成するように調整される可能性があります。
_alias cd='cd "$(/bin/pwd)"; cd'
_
同様の方法で、bash pwd
組み込みを取り除くことができます。
_alias pwd=`/bin/pwd`
_
必要なのは_pwd -P
_です。
CentOS 6の_man pwd
_から:
_-L, --logical use PWD from environment, even if it contains symlinks -P, --physical avoid all symlinks
_
または、BSD pwd
のマニュアルページから、もう少しわかりやすい言葉で:
_-L Display the logical current working directory. -P Display the physical current working directory (all symbolic links resolved).
_
「バックアップ」の意味は100%わかりませんが、「ディレクトリを現在のディレクトリの親に変更する」という意味だとすると、次のように使用できます。
_cd "$(dirname "$(pwd -P)")"
_
現在の作業パスにシンボリックリンクが含まれていない場合、これは_cd ..
_と同等です。
または、cd "$(pwd -P)"
を使用して現在の論理ディレクトリの物理パスに移動し、必要に応じて_cd ..
_を使用することもできます。