ฉันแก้ไขคำตอบบน 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 number
ksh
(93u + 2012-08-01): ล้มเหลว แต่กระบวนการนั้นเริ่มต้นชัดเจน (1223
) แม้ว่าจะไม่มีgedit
หน้าต่างปรากฏขึ้น:$ nohup gedit >& /dev/null & [1] 1223 $ ksh: /dev/null: bad file unit number
fish
(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
คำสั่งนี้ทำงานได้ตามปกติสำหรับ