Tengo un alias definido en mi .bashrc
alias l.='ls -d .* --color=auto'
Es muy útil :) pero no funciona a través de ssh
:
$ ssh localhost l.
bash: l.: command not found
¿Porqué es eso?
Tratar:
ssh localhost -t bash -ci l.
Nota:
El alias debe estar en ~/.bashrc
el servidor remoto, no en su máquina local.
La -i
opción le dice bash
que ejecute un shell interactivo. Los alias están habilitados de forma predeterminada solo en shells interactivos.
Las -t
opciones le dicen ssh
que asigne un pseudo-tty. Sin esto, bash
emite un mensaje de advertencia cuando se inicia en modo interactivo. Esto también permite ls
colores. Sin ella, tendrías que usar --color=always
, ver man ls
.
Hay otra forma de habilitar los alias, sin establecer el indicador interactivo, a saber shopt -s expand_aliases
. Entonces podrías probar:
ssh localhost 'bash -c "shopt -s expand_aliases; l."'
Sin embargo:
Es .bashrc
posible que solo defina alias si la fuente de shell es interactiva. En este ejemplo, el shell no sería interactivo en ese momento.
Si intenta definir alias en la misma línea, vea esto .
ssh
pensando en mí misma :)
ssh
. Sí, localhost
eso no es un problema.
ssh ... <cmd>
sale cuando <cmd>
se hace. Si desea mantener el caparazón después ls
, intente ssh localhost -t 'bash -ci "l.; exec bash"'
.
.bashrc
solo se lee si el shell es interactivo.alias l.='ls -d .* --color'
aparecerán los colores. Solo pensé que agregaría eso. Al menos estaba experimentando eso.source .bashrc
)alias l.='ls -dC .* --color'
donde seC
muestran las columnas.