Почему мой псевдоним не работает по ssh?

Мне определили псевдоним в моем .bashrc

alias l.='ls -d .* --color=auto'

Это очень полезно :) но это не работает через ssh:

$ ssh localhost l.
bash: l.: command not found

Почему это?

8
задан 9 August 2016 в 15:19

1 ответ

Попытка:

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 мог бы только определить псевдонимы, если оболочка, получающая его, является интерактивной. В этом примере оболочка не была бы интерактивной в то время.

    • , При попытке определить псевдонимы на той же строке, см. это .

8
ответ дан 23 November 2019 в 05:43

Другие вопросы по тегам:

Похожие вопросы: