これはかなり基本的な* nixの質問です:
次のシンボリックリンクが作成されたとします。
ln -s /usr/local/projects/myproject/ myproject
...私のホームディレクトリから/ home/jvf /、myprojectと入力すると、シンボリックリンクでpwd / home/jfv/myproject /が得られます。ここで、シンボリックリンクしたディレクトリの親ディレクトリに入りたいのですが、cd ..コマンドを実行しても、ホームディレクトリに戻るだけです/ home/jfv/。とにかく、入力したシンボリックリンクの跡をエスケープする代わりに、pwdがmyprojectディレクトリの実際のパスと等しいかどうかを確認します。つまり、私のパスワードを/ home/jfv/myproject /から/ usr/local/projects/myproject /に変更しますか?
ありがとう:)
-P
(物理)フラグ:
pwd -P
cd -P ..
以下を実行すると、大丈夫です。
1)最初にシンボリックリンクをたどります:
[jfv@localhost ~]$ cd myproject
2)次のコマンドを実行します。
[jfv@localhost myproject]$ cd -P ./
3)これで、場所を確認でき、物理ディレクトリにいることがわかります
[jfv@localhost myproject]$ pwd
出力は次のようになります。
/usr/local/projects/myproject
これで、実行するすべての操作はローカルになり、シンボリックリンク上にはありません。
プログラムでこれを行うには、getcwdライブラリ関数を使用します。
#include <unistd.h>
#include <stdio.h>
int main(int argc, char **argv)
{
char buf[1024*1024L];
char *cwd;
cwd = getcwd(buf, sizeof buf);
if (cwd == NULL) {
perror("getcwd");
return 1;
}
printf("%s\n", cwd);
return 0;
}