Tôi đang xem http://taint.org/wk/RemoteLoginAutoScreen để thiết lập máy chủ của mình để nó tự động khởi động phiên màn hình khi tôi đăng nhập qua SSH.
Tôi đã thêm phần sau vào .bashrc của mình:
# Auto-screen invocation. see: http://taint.org/wk/RemoteLoginAutoScreen
# if we're coming from a remote SSH connection, in an interactive session
# then automatically put us into a screen(1) session. Only try once
# -- if $STARTED_SCREEN is set, don't try it again, to avoid looping
# if screen fails for some reason.
if [ "$PS1" != "" -a "${STARTED_SCREEN:-x}" = x -a "${SSH_TTY:-x}" != x ]
then
STARTED_SCREEN=1 ; export STARTED_SCREEN
[ -d $HOME/lib/screen-logs ] || mkdir -p $HOME/lib/screen-logs
sleep 1
screen -RR && exit 0
# normally, execution of this rc script ends here...
echo "Screen failed! continuing with normal bash startup"
fi
# [end of auto-screen snippet]
Điều hấp dẫn là tôi luôn có một phiên màn hình có tên tách rời đang chạy một máy chủ ứng dụng rails. Bây giờ khi tôi đăng nhập, tôi được đưa vào phiên này.
Có cách nào để sửa đổi mã trên để không chọn phiên theo tên hoặc một số giá trị khác không? Nếu phiên tách rời là phiên màn hình duy nhất thì tôi muốn bắt đầu một phiên màn hình mới.
Một vấn đề khác mà tôi gặp phải là khi tách ra, tôi hoàn toàn đăng xuất khỏi kết nối SSH của mình thay vì chỉ rời khỏi phiên màn hình.
PS1
là một cách phổ biến nhưng bị hỏng để kiểm tra xem vỏ có tương tác hay không. Đặc biệt, có nhiều hệ thốngPS1
kết thúc một biến môi trường, được đặt trong mọi shell mà bạn chạy. Sử dụngcase $- in *i*) echo interactive;; *) echo not interactive;; esac
hoặc trong bash[[ $- = *i* ]]
để kiểm tra vỏ tương tác. Sử dụng[ -t 0 ]
để kiểm tra nếu đầu vào tiêu chuẩn là một thiết bị đầu cuối.