W przypadku prosta return
nie wykonać zadanie, oto kolejny podejście od this blog article:
if `tty -s`; then
mesg n
fi
tty -s
sprawdza czy istnieje TTY załączeniu (the -s
mówi to zrobić tak cicho i po prostu wyjdź z odpowiednim kodem powrotu). tty
zwraca załączone tty (np. "/ Dev/pts/1"). To powinno być bezpieczniejsze niż sprawdzanie zmiennej powłoki;)
mesg
kontroluje dostęp do zapisu do twojego terminala (msg n
uniemożliwia zapisywanie do (w naszym przypadku nieistniejącego) terminala), a zatem wymaga obecności.
W niektórych systemach (w moim przypadku Debiana Jessie, ale istnieją również doniesienia na Ubuntu) mesg n
ustawiony jest bezwarunkowo albo ~/.bashrc
lub ~/.profile
. Więc jeśli istnieje w ten sposób, może to być winowajcą.
Podobnie jak w przypadku innych przykładów, można oczywiście utworzyć jednolinijkową: [[ $(tty -s) ]] && mesg n
. I nikt nie trzyma cię z połączenia dwóch:
if [[ $(tty -s) ]]; then
mesg n
else
return
fi
Btw: Zgodnie z połączonej artykuł, fragment ten powinien udać się do .bashrc
maszyny podłączeniu do („Remote”) - więc jeśli to [email protected]
, powinno to być stosowane na początku /home/johndoe/.bashrc
na somehost
. W moim przypadku pozbyłem się wiadomości po zastosowaniu tej zmiany również na "hoście wywołującym".
PS: Sprawdź także .profile
, jeśli ma autonomiczną komendę msg n
(w moim przypadku). Jeśli tak, zapisz to.
1:mesg n
jest stosowany w celu zapobiegania innym użytkownikom na piśmie maszynowym do bieżącego urządzenia końcowego, która per se jest dobrą rzeczą - ale nie jako jakiegoś rsync
pracy;)
Najwyraźniej robi to, co ma robić. Przesyłanie plików przebiegło pomyślnie. Ale jaki jest komunikat o błędzie i czy powinienem się tym przejmować? –