कुछ बॉर्न-जैसे गोले में, readबिलिन फाइल में से पूरी लाइन नहीं पढ़ सकता है /proc(नीचे दी गई कमांड को चलाया जाना चाहिए zsh, अन्य शेल के साथ प्रतिस्थापित $=shellकरें $shell):
$ for shell in bash dash ksh mksh yash zsh schily-sh heirloom-sh "busybox sh"; do
printf '[%s]\n' "$shell"
$=shell -c 'IFS= read x </proc/sys/fs/file-max; echo "$x"'
done
[bash]
602160
[dash]
6
[ksh]
602160
[mksh]
6
[yash]
6
[zsh]
6
[schily-sh]
602160
[heirloom-sh]
602160
[busybox sh]
6
readमानक के लिए मानक इनपुट की आवश्यकता होती है एक पाठ फ़ाइल होना चाहिए , क्या यह आवश्यकता विभिन्न व्यवहारों का कारण बनती है?
पाठ फ़ाइल की POSIX परिभाषा पढ़ें , मैं कुछ सत्यापन करता हूं:
$ od -t a </proc/sys/fs/file-max
0000000 6 0 2 1 6 0 nl
0000007
$ find /proc/sys/fs -type f -name 'file-max'
/proc/sys/fs/file-max
की NULसामग्री में कोई चरित्र नहीं है /proc/sys/fs/file-max, और findइसे एक नियमित फ़ाइल के रूप में भी रिपोर्ट किया है (क्या यह एक बग है find?)।
मुझे लगता है कि खोल ने हुड के नीचे कुछ किया था, जैसे file:
$ file /proc/sys/fs/file-max
/proc/sys/fs/file-max: empty
straceआधारित व्याख्या को समझना बहुत आसान है!