ฉันแก้ไขคำตอบบน Ask Ubuntu ที่แนะนำต่อไปนี้
nohup gedit >& /dev/null &
เมื่อพวกเขาตั้งใจจริง
nohup gedit &> /dev/null &
หลังได้อย่างถูกต้องเปลี่ยนเส้นทางทั้ง stderr และ stdout /dev/nullไป ฉันคาดหวังว่าอดีตจะสร้างไฟล์ชื่อ&หรือมีแนวโน้มที่จะให้ข้อผิดพลาดเช่นเดียวกับกรณีอื่น ๆ :
$ echo "foo" >&
bash: syntax error near unexpected token `newline'
แต่ดูเหมือนว่ามันจะทำงานในลักษณะเดียวกับที่เคยเป็นมาก่อนgeditหน้าต่างปรากฏขึ้นและไม่มีการพิมพ์ข้อความแสดงข้อผิดพลาด
ฉันควรทราบด้วยว่านี่เป็นเชลล์เฉพาะ:
bash(4.2.45 (1) -release),zsh(5.0.2),csh(เวอร์ชั่นแพ็คเกจ deb: 20110502-2) และtcsh(6.18.01): ทำงานตามที่อธิบายไว้ข้างต้นไม่มีข้อความแสดงข้อผิดพลาดไม่มีไฟล์ที่สร้างขึ้นdash(0.5.7-3):$ nohup gedit >& /dev/null & $ dash: 2: Syntax error: Bad fd numberksh(93u + 2012-08-01): ล้มเหลว แต่กระบวนการนั้นเริ่มต้นชัดเจน (1223) แม้ว่าจะไม่มีgeditหน้าต่างปรากฏขึ้น:$ nohup gedit >& /dev/null & [1] 1223 $ ksh: /dev/null: bad file unit numberfish(2.0.0):> nohup gedit >& /dev/null & fish: Requested redirection to something that is not a file descriptor /dev/null nohup gedit >& /dev/null & ^
ดังนั้นทำไมคำสั่งนี้จึงรันโดยไม่มีข้อผิดพลาด (และไม่มีไฟล์เอาต์พุตที่สร้างขึ้น) ในเชลล์บางตัวและล้มเหลวในเชลล์อื่น ๆ การ>&ทำในกรณีพิเศษที่เห็นได้ชัดnohupคืออะไร? ฉันเดาว่า>& /dev/nullมันถูกตีความว่าเป็น>&/dev/nullแต่ทำไมพื้นที่ไม่ได้ทำให้เกิดข้อผิดพลาดในเชลล์เหล่านี้?
nohup commandเรียก TTY อิสระ application.According ของคุณไปยังหน่วยความจำของฉันdashขยายash, Debian ash, ashพัฒนาโดยOpenBSDและก็เปลือก จำกัด แม้ Maemo OS (Debian ฐานบนมือถือ N900) ใช้ประashเปลือกครอบครัวได้รับการ จำกัด การใช้งานที่คาดหวังจากการทุบตีหรือ tcsh
dashพิมพ์ออกมาได้ แต่แพ็คเกจคือ0.5.7-3คุณเป็นใคร นอกจากนี้คุณแน่ใจหรือว่าคุณกำลังใช้งานdash? นั่นเป็นค่าเริ่มต้นของ Ubuntu shใช่ไหม?
nohupคำถามของฉันคือสาเหตุที่>&ดูเหมือนว่าจะทำงานกับ nohup เพียงอย่างเดียวในเปลือกหอยบางอย่าง
dashคำสั่งนี้ทำงานได้ตามปกติสำหรับ