Trên một số máy chủ, họ cung .bash_profile
cấp nguồn không chính xác cho các thông tin đăng nhập không tương tác như scp. Tin nhắn được in đến thiết bị đầu cuối có thể có thể gây ra scp
hoạt động không chính xác. Nếu bạn có tin nhắn trong .bash_profile
đó có thể là nguyên nhân.
Để vẫn có thông điệp đăng nhập, biểu ngữ, v.v. của bạn hiển thị trên thông tin đăng nhập tương tác và vẫn có thể sử dụng scp
thông qua thông tin đăng nhập không tương tác, hãy thêm vào sau đây trước bất kỳ thông báo nào sẽ in ra trong .bash_profile
tệp của bạn .
# ********** If not running interactively, don't do anything more! ***********
[ -z "$PS1" ] && return
Mã thay thế là:
[[ $- == *i* ]] || return
Và một mã thay thế khác:
case $- in
*i*) ;;
*) return;;
esac
Mà tôi tin là phiên bản dài hơn của mã thay thế đầu tiên. Tôi đã tìm thấy trên một số máy chủ mã đầu tiên không hoạt động chính xác nhưng mã thứ hai thì không.
Trong quá trình đăng nhập scp không tương tác, nó sẽ hủy bỏ việc thực thi thêm .bash_profile và cho phép scp hoạt động, nhưng sẽ hiển thị thông điệp đăng nhập của bạn khi bạn đăng nhập qua ssh.
Lưu ý: Điều này cũng có thể được sử dụng trong .bashrc
tệp của bạn nếu bạn lấy nguồn từ .bash_profile
(với $ PATH) để chỉ một phần của nó có nguồn gốc trong các lần đăng nhập không tương tác.