作者 主題: inode問題一問  (閱讀 3372 次)

0 會員 與 1 訪客 正在閱讀本文。

andrew9

  • 懷疑的國中生
  • **
  • 文章數: 41
    • 檢視個人資料
inode問題一問
« 於: 2006-05-27 20:59 »
我在test的家目錄建立一個軟連結1.soft

[test@localhost ~]$ ls -dli 1.soft .
16001 drwx--x--x  6 test test 4096 May 27 19:41 ./
16016 lrwxrwxrwx  1 test test   14 May 27 19:41 1.soft -> /home/andrew/1/

此時 . 這個連結名i-number為16001

[test@localhost ~]$ cd 1.soft

[test@localhost 1.soft]$ ls -ail
total 12
368006 drwxrwxr-x   3 andrew andrew 4096 May 27 17:18 ./
368001 drwx--x--x  17 andrew andrew 4096 May 27 19:37 ../
368018 drwxrwxr-x   4 andrew andrew 4096 May 27 17:33 2/

此時 .. 連結名的i-number為368006

但當我在這邊執行
[test@localhost 1.soft]$ cd ..
[test@localhost ~]$


卻是回到了自己的家目錄了~~~

我想知道的是當我在那個軟連結所指向的目錄下(/home/test/1.soft)執行
cd ..

.. 的 inode應該是指向 368006
但為甚麼它卻回到了自己的家目錄~~也就是家目錄下的 . 所指向的inode 16001

為何不是跑到i-number 368006 呢?

一般我們在建立一個目錄時底下一定有 . 與 ..
然 .. 的 i-number 一定是與 父目錄本身的 i-number 是相同的!
所以我們執行cd .. 才會回到父目錄下不是嗎?

另外我發現執行

[test@localhost 1.soft]$ pwd
/home/test/1.soft



[test@localhost 1.soft]$ /bin/pwd
/home/andrew/1

卻又是不同的結果~~~難道外部命令與內部命令有所差異嗎?

小弟不解~~~煩請高人指導 :)

creative1223

  • 懷疑的國中生
  • **
  • 文章數: 69
    • 檢視個人資料
inode問題一問
« 回覆 #1 於: 2006-05-27 22:10 »
一開始的  ls -dli 取回來的i-node number怪怪的
cd ..的意思是回到上層的目錄
也就是會回到上層目錄的i-node所指向的位置
你的pwd在/home/test/1.soft
執行cd ..會回到上一層目錄…也就是家目錄/home/test
這個也沒有問題呀…

pwd
/bin/pwd應該是相同的…

/home/test/...........
/home/andrew/..........
不會這樣才對

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17480
    • 檢視個人資料
    • http://www.study-area.org
inode問題一問
« 回覆 #2 於: 2006-05-27 23:26 »
我覺得 cd .. 之後, pwd 不可能是在 1.soft 那.
如果不 test 就是 andrew .
不知道能否請你在测试一次?

andrew9

  • 懷疑的國中生
  • **
  • 文章數: 41
    • 檢視個人資料
inode問題一問
« 回覆 #3 於: 2006-05-28 00:39 »
各位大大抱歉@@
原先帖子編輯有問題~~~
[test@localhost 1.soft]$ cd ..
[test@localhost ~]$
這邊原本多了兩行~~害大家可能看不太懂
我已經更改完了^^"

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17480
    • 檢視個人資料
    • http://www.study-area.org
inode問題一問
« 回覆 #4 於: 2006-05-28 01:45 »
這是個很好的議題...
可能跟你用的 shell 有關.
或許, 先搞懂如下命令有啥差別, 然後我們再來討論:
type pwd
which pwd

andrew9

  • 懷疑的國中生
  • **
  • 文章數: 41
    • 檢視個人資料
inode問題一問
« 回覆 #5 於: 2006-05-28 01:54 »
引述: "netman"
這是個很好的議題...
可能跟你用的 shell 有關.
或許, 先搞懂如下命令有啥差別, 然後我們再來討論:
type pwd
which pwd

謝謝netman大大引導方向^_^
我會研究的^_^
謝謝您!

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17480
    • 檢視個人資料
    • http://www.study-area.org
inode問題一問
« 回覆 #6 於: 2006-05-28 13:14 »
這樣吧, 我也來提供一個測試給大家參考:

kenny@linux:~/tmp/d1> echo $SHELL
/bin/bash
kenny@linux:~/tmp/d1> pwd
/home/kenny/tmp/d1
kenny@linux:~/tmp/d1> ls -l d4
lrwxrwxrwx 1 kenny users 8 2006-05-28 00:08 d4 -> ../d2/d3
kenny@linux:~/tmp/d1> cd d4
kenny@linux:~/tmp/d1/d4> pwd
/home/kenny/tmp/d1/d4
kenny@linux:~/tmp/d1/d4> /bin/pwd
/home/kenny/tmp/d2/d3
kenny@linux:~/tmp/d1/d4> tcsh
d1/d4> pwd
/home/kenny/tmp/d2/d3
d1/d4> /bin/pwd
/home/kenny/tmp/d2/d3

Vic~

  • 活潑的大學生
  • ***
  • 文章數: 231
    • 檢視個人資料
inode問題一問
« 回覆 #7 於: 2006-05-28 17:19 »
哇....

從來也只懂得bash,
這個問題自己沒想過,
大概也不會這麼想?

原來不同的shell,
會有如差異,
受教了。

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17480
    • 檢視個人資料
    • http://www.study-area.org
inode問題一問
« 回覆 #8 於: 2006-05-28 17:35 »
呵... 這個可不是我發現的. 是另有高人指點的...
他用 c 來 try 過, 發現結果跟 csh 一樣.
我想, 這是原本 kernel fs 的行為, 而 bash 則作了修改.