Мне определили псевдоним в моем .bashrc
alias l.='ls -d .* --color=auto'
Это очень полезно :) но это не работает через ssh
:
$ ssh localhost l.
bash: l.: command not found
Почему это?
Попытка:
ssh localhost -t bash -ci l.
Примечание:
псевдоним должен быть в ~/.bashrc
на удаленном сервере, не на Вашей локальной машине.
-i
опция говорит bash
выполнять интерактивную оболочку. Псевдонимы включены по умолчанию только в интерактивных оболочках.
Эти -t
опции говорит ssh
выделять pseudo-tty. Без этого, bash
испускает предупреждающее сообщение при запуске в интерактивном режиме. Это также включает ls
цвета. Без него необходимо было бы использовать --color=always
, видеть man ls
.
существует другой способ включить псевдонимы, не устанавливая интерактивный флаг, а именно, shopt -s expand_aliases
. Таким образом, Вы могли попробовать:
ssh localhost 'bash -c "shopt -s expand_aliases; l."'
Однако:
Ваш .bashrc
мог бы только определить псевдонимы, если оболочка, получающая его, является интерактивной. В этом примере оболочка не была бы интерактивной в то время.
, При попытке определить псевдонимы на той же строке, см. это .