Pada beberapa host mereka salah sumber .bash_profile
untuk login non-interaktif seperti scp. Pesan yang dicetak ke terminal mungkin dapat menyebabkan scp
tidak berfungsi dengan benar. Jika Anda memiliki pesan di dalamnya, .bash_profile
ini bisa menjadi penyebabnya.
Agar pesan login, spanduk, dll. Anda tetap ditampilkan pada login interaktif dan masih dapat digunakan scp
melalui login non-interaktif, tambahkan berikut ini sebelum pesan apa pun yang akan dicetak dalam .bash_profile
file 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 .bashrc
file Anda jika Anda sumbernya dari .bash_profile
(untuk $ PATH) sehingga hanya sebagian yang bersumber selama login non-interaktif.