Trong trường hợp đơn giản return
không thực hiện công việc, đây là một cách tiếp cận lấy từ this blog article:
if `tty -s`; then
mesg n
fi
tty -s
kiểm tra nếu có một TTY đính kèm (các -s
nói với nó để làm như vậy âm thầm và chỉ thoát với mã trả về thích hợp). tty
trả về giá trị tty đính kèm (ví dụ: "/ dev/pts/1"). Điều này sẽ an toàn hơn việc kiểm tra một số biến shell;)
mesg
kiểm soát quyền ghi vào thiết bị đầu cuối của bạn (msg n
không cho phép ghi vào đầu cuối (trong trường hợp không tồn tại) của chúng tôi).
Trên một số hệ thống (trong trường hợp của tôi Debian Jessie, nhưng cũng có những báo cáo về Ubuntu) mesg n
được thiết lập vô điều kiện trong cả hai ~/.bashrc
hay ~/.profile
. Vì vậy, nếu nó tồn tại theo cách đó, điều này có thể là thủ phạm.
Giống như các ví dụ khác, bạn có thể làm cho một lớp lót: [[ $(tty -s) ]] && mesg n
. Và không ai giúp bạn từ việc kết hợp hai:
if [[ $(tty -s) ]]; then
mesg n
else
return
fi
Btw: Theo bài báo liên kết, đoạn này nên đi đến .bashrc
của máy bạn kết nối - (the "từ xa") - vì vậy nếu đó là [email protected]
, điều này sẽ được áp dụng khi bắt đầu /home/johndoe/.bashrc
trên somehost
. Trong trường hợp của tôi, tôi chỉ nhận được tin nhắn sau khi đã áp dụng thay đổi này trên "máy chủ gọi" là tốt.
PS: Ngoài ra, hãy kiểm tra .profile
nếu nó có lệnh độc lập msg n
(trong trường hợp của tôi). Nếu có, hãy quấn nó ở đó.
1:mesg n
được sử dụng để ngăn chặn người dùng khác trên bằng văn bản máy tính để thiết bị đầu cuối hiện tại của bạn, mà mỗi gia nhập là một điều tốt - nhưng không hữu ích đối với một số rsync
công việc;)
Rõ ràng nó làm những gì nó được cho là phải làm. Quá trình chuyển tệp đã diễn ra thành công. Nhưng thông báo lỗi là gì và tôi có nên lo lắng về nó không? –