Pada beberapa host mereka salah sumber .bash_profileuntuk login non-interaktif seperti scp. Pesan yang dicetak ke terminal mungkin dapat menyebabkan scptidak berfungsi dengan benar. Jika Anda memiliki pesan di dalamnya, .bash_profileini bisa menjadi penyebabnya.
Agar pesan login, spanduk, dll. Anda tetap ditampilkan pada login interaktif dan masih dapat digunakan scpmelalui login non-interaktif, tambahkan berikut ini sebelum pesan apa pun yang akan dicetak dalam .bash_profilefile Anda .
# ********** If not running interactively, don't do anything more! ***********
[ -z "$PS1" ] && return
Kode alternatif adalah:
[[ $- == *i* ]] || return
Dan kode alternatif lain:
case $- in
*i*) ;;
*) return;;
esac
Yang saya percaya adalah versi yang lebih panjang dari kode alternatif pertama. Saya telah menemukan pada beberapa host kode pertama tidak berfungsi dengan benar tetapi yang kedua tidak.
Selama login scp non-interaktif akan membatalkan eksekusi .bash_profile lebih lanjut dan memungkinkan scp untuk bekerja, tetapi akan menampilkan pesan login Anda ketika Anda login melalui ssh.
Catatan: Ini juga dapat digunakan dalam .bashrcfile Anda jika Anda sumbernya dari .bash_profile(untuk $ PATH) sehingga hanya sebagian yang bersumber selama login non-interaktif.