Tôi đã chỉnh sửa câu trả lời trên Hỏi Ubuntu đã gợi ý như sau
nohup gedit >& /dev/null &
Khi họ thực sự có nghĩa là
nohup gedit &> /dev/null &
Cái sau chuyển hướng chính xác cả stderr và stdout đến /dev/null. Tôi đã hy vọng trước đây sẽ tạo một tệp có tên &hoặc, nhiều khả năng, sẽ gây ra lỗi như trong các trường hợp khác:
$ echo "foo" >&
bash: syntax error near unexpected token `newline'
Thay vào đó, nó dường như hoạt động chính xác như trước đây, một geditcửa sổ xuất hiện và không có thông báo lỗi được in.
Tôi cũng cần lưu ý rằng đây là vỏ cụ thể:
bash(4.2.45 (1) -release),zsh(5.0.2),csh(phiên bản gói deb: 20110502-2) vàtcsh(6.18.01): hoạt động như mô tả ở trên, không có thông báo lỗi, không tạo tệp.dash(0,5,7-3):$ nohup gedit >& /dev/null & $ dash: 2: Syntax error: Bad fd numberksh(93u + 2012-08-01): thất bại, nhưng một quá trình rõ ràng đã bắt đầu (1223) mặc dù không cógeditcửa sổ nào xuất hiện:$ 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 & ^
Vì vậy, tại sao lệnh này chỉ đơn giản chạy mà không có lỗi (và không có tệp đầu ra được tạo) trong một số shell và thất bại trong những cái khác? Việc >&làm trong trường hợp đặc biệt rõ ràng là nohupgì? Tôi đoán điều đó >& /dev/nullđang được hiểu là >&/dev/nullnhưng tại sao không gian lại gây ra lỗi trong các shell này?
nohup command, Chạy tty độc lập application.According của bạn vào bộ nhớ của tôi, dashmở rộng của ash, Debian ash, ashđược phát triển bởi OpenBSDvà đó là vỏ hạn chế, ngay cả hệ điều hành maemo (Debian Dựa trên N900 điện thoại di động) sử dụng dấu gạch ngang, ashvỏ gia đình có sử dụng hạn chế mong đợi của bash hoặc tcsh.
dashin phiên bản của nó ra nhưng gói là 0.5.7-3, cái gì là của bạn? Ngoài ra, bạn có chắc là bạn đang chạy dash? Đó là mặc định của Ubuntu shphải không?
nohupđó xảy ra, câu hỏi của tôi là tại sao >&dường như hoạt động với nohup một mình trong một số vỏ.
dash.