Pourquoi mon alias ne fonctionne-t-il pas sur ssh?


9

J'ai un alias défini dans mon .bashrc

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

C'est très utile :) mais cela ne fonctionne pas via ssh:

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

Pourquoi donc?


1
.bashrcn'est lu que si le shell est interactif.
— user4556274

1
Avec votre alias sur ssh, il n'y aura probablement pas de couleur, où si vous changez votre alias, alias l.='ls -d .* --color'les couleurs apparaissent. Je pensais juste ajouter ça. Au moins, je vivais ça.
— Terrance

@Terrance Je me posais des questions à ce sujet ... Je n'ai toujours pas de couleur (et pas de colonnes) bien que j'obtienne la couleur (et les colonnes) comme avant après avoir changé l'alias (et fait source .bashrc)
— Zanna

1
ah ha! Je crois que j'ai compris. Essayez votre alias comme alias l.='ls -dC .* --color'où les Ccolonnes affiche.
— Terrance

1
J'ai modifié la réponse pour résoudre le problème de couleur.
— Matei David

Réponses:


10

Essayer:

ssh localhost -t bash -ci l.

Remarque:

  • L'alias doit se trouver ~/.bashrcsur le serveur distant, pas sur votre ordinateur local.

  • L' -ioption indique bashd'exécuter un shell interactif. Les alias sont activés par défaut uniquement dans les shells interactifs.

  • L' -toption indique sshd'allouer un pseudo-tty. Sans cela, bashémet un message d'avertissement lors du démarrage en mode interactif. Cela permet également des lscouleurs. Sans cela, il faudrait utiliser --color=always, voyez man ls.

  • Il existe une autre façon d'activer les alias, sans définir l'indicateur interactif, à savoir shopt -s expand_aliases. Vous pouvez donc essayer:

    ssh localhost 'bash -c "shopt -s expand_aliases; l."'

    Toutefois:

    • Vous .bashrcpouvez définir des alias uniquement si le shell qui l'approvisionne est interactif. Dans cet exemple, le shell ne serait pas interactif à ce moment.

    • Si vous essayez de définir des alias sur la même ligne, voyez ceci .


1
cela fonctionne .... à votre explication, bien sûr, mais je suis sshpour moi :)
— Zanna

1
Je voulais dire en général lors de l'utilisation ssh. Oui, localhostce n'est pas un problème.
— Matei David

ssh ... <cmd>sort quand <cmd>c'est fait. Si vous souhaitez conserver le shell après ls, essayez ssh localhost -t 'bash -ci "l.; exec bash"'.
— Matei David

Aha je comprends. Merci beaucoup. Je vais supprimer mes commentaires :)
— Zanna
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.