2016-02-17 22 views
0

爲什麼 Bash同時提供-h-L以檢查文件是否存在並且是符號鏈接?爲什麼Bash有兩種方法檢查符號鏈接(-h和-L)?

+1

順便說一句,它通常值得檢查是否有什麼特定的bash之前問它作爲bash問題。 Bash(幾乎毫無例外)是POSIX sh語言的超集,它從早期的ksh借鑑了一些想法,這些想法借用了Bourne的想法;那裏有很多歷史,並且通過歷史檢查你是否真的好奇是什麼,從而給出了一個很好的概念,從哪裏來。 –

回答

2

the POSIX test standard需要-h-L。因此,bash 必須包括都要合規。

但是...爲什麼?這是一個歷史問題:老版本的POSIX根本不需要對符號鏈接進行測試操作,最近在2004年(第6期)解決了一個限制。在此之前,不同的UNIX實現以相互不兼容的方式實現了這一點; POSIX標準通過要求兩者來統一這一差異。


值得注意的是,現代的BSD test內,-h記錄爲傳統的形式,-L它的現代替代品。從the FreeBSD man page for test

-h文件 真,如果文件存在且是一個符號鏈接。保留此運營商 以與此程序的以前版本 兼容。不要依賴它的存在;改爲使用-L

相關問題