我在网上发现了一个添加到我的.bashrc的函数,该函数使用主机名生成一个新的SSH会话:
# Opens SSH on a new screen window with the appropriate name.
screen_ssh() {
numargs=$#
screen -t ${!numargs} ssh $@
if [ $TERM == "screen" -o $TERM == "screen.linux" ] && [ ! -z "$PS1" ]; then
alias ssh=screen_ssh
fi
if [[ $- == *i* ]]
then
[ "$STY" ] && ssh() { screen -t "${1##*@}" ssh "$@"; } # Spawn new window in Screen for SSH
fi
但它也会对别名执行此操作,如下所示:
lsrem(){ ssh $1 "ls -l" ; }
所以我的问题是如何阻止它使用别名/函数,并且只能以交互方式工作:
ssh somehost
提前致谢。
答案 0 :(得分:0)
我找到了一种(hacky)方式:
# Opens SSH on a new screen window with the appropriate name.
screen_ssh() {
numargs=$#
if [ "$numargs" -eq "1" ];
then
screen -t ${!numargs} ssh $@
else
ssh $@
fi
}
if [ $TERM == "screen" -o $TERM == "screen.linux" ]; then
alias ssh=screen_ssh
fi
这会检查SSH的数量是否大于1,所以当我这样做时,不会产生新的屏幕会话:
ssh hostname
我绝对愿意接受更好的方法!