Назад | Перейти на главную страницу

Функция bashrc под названием ssh не работает

Я создал функцию в своем файле bashrc, чтобы при подключении к чему-либо по ssh автоматически открывался сеанс tmux.

function ssht () {    
    /usr/bin/ssh $@ -t 'tmux a || tmux || /bin/bash'
}

Это отлично работает, но я не хочу использовать ssht, я хочу просто использовать ssh. Когда я меняю функцию с ssht на ssh, tmux не открывается, но успешно выполняет ssh на машине.

Я предполагаю, что это не работает, потому что, когда я вызываю ssh, он игнорирует функцию в файле bashrc и вместо этого запускает ssh.

Есть ли способ просто использовать "ssh" вместо "ssht"

Функция SSH Bash

Сделав функцию ssh для запуска чего-либо при входе в систему, как вы, вы можете сделать следующее:

function ssht () {    
    \ssh $@ -t 'tmux a || tmux || /bin/bash'
}

alias ssh=ssht
  • Добавление \ перед ssh временно отключает псевдоним.
  • В ssht функция остается прежней, но мы добавляем псевдоним к ssh, указывающий на нее.
  • ВНИЗ: другие вещи могут сломаться, хороший пример - автозаполнение вкладок хостов из вашей конфигурации ssh

Команда SSH (альтернатива)

В качестве альтернативы вы можете использовать встроенный способ SSH, добавив Command="tmux" перед вашим открытым ключом в authorized_keys файл. Его можно использовать следующим образом:

command="echo howdy" ssh-rsa AAAAB3...