Việc chuyển hướng đầu ra lệnh dường như không liên quan vì thông báo được gửi bởi trình bao khi công việc được bắt đầu không đồng bộ. Chính xác hơn, đó là một tính năng shell (fonctionality) liên quan đến kiểm soát công việc .
Ở đây, một trích dẫn xuất phát từ "Hướng dẫn tham khảo Bash", chương "Kiểm soát công việc", phần một.
Shell liên kết một JOB với mỗi đường ống. Nó giữ một bảng các công việc hiện đang thực thi, có thể được liệt kê với jobs
lệnh. Khi Bash bắt đầu một công việc không đồng bộ, nó sẽ in một dòng giống như:
[1] 25647
chỉ ra rằng công việc này là công việc số 1 và ID tiến trình của quy trình cuối cùng trong đường ống liên quan đến công việc này là 25647. Tất cả các quy trình trong một đường ống dẫn đều là thành viên của cùng một công việc. Bash sử dụng sự trừu tượng JOB làm cơ sở để kiểm soát công việc.
Lưu ý rằng tập lệnh shell không hiển thị thông báo này.
$ cat test
#!/bin/bash
true & echo true
$ ./test
true
Thực ra
Zsh
Tài liệu Zsh cung cấp các chỉ dẫn tương tự về các thông báo này, xem man 1 zshmisc
phần "CÔNG VIỆC". Các thông báo này không được hiển thị khi kiểm soát công việc bị vô hiệu hóa.
GIÁM SÁT ( -m , ksh: -m )
Cho phép kiểm soát công việc. Đặt theo mặc định trong vỏ tương tác.
zsh_prompt % setopt no_monitor
zsh_prompt % true & echo true
true
zsh_prompt %
zsh_prompt %
Bash
Dường như Bash luôn hiển thị ví dụ [1] 25647
. Ví dụ "thông báo cuối cùng" [1]+ Done true
không được hiển thị khi điều khiển công việc bị tắt.
bash_prompt $ true & echo true
[1] 25647
true
bash_prompt $
[1]+ Done true
Kiểm soát công việc bị vô hiệu hóa
bash_prompt $ set +m # disable job control
bash_prompt $ true & echo true
[1] 25685
bash_prompt $
bash_prompt $
Phần kết luận
Tôi không biết nếu vô hiệu hóa kiểm soát công việc để ẩn thông báo là một điều tốt?
Tài nguyên