Puncte:0

Aliasul eșuează atunci când este definit în .bash_aliases pe Ubuntu 20.04.2 peste ssh cu serverul de salt

drapel cn

A creat un server AWS Ubuntu 20.04.2. Acest server se află în spatele unui server jump.

Odată ce serverul a pornit, am alergat:

sudo update
sudo upgrade

De asemenea, a repornit serverul. După aceea, a creat un ~/.bash_aliases fișier și a adăugat următorul alias:

alias lsd='ls -a -g --group-directories-first'

După salvarea .bash_aliases, s-a reîncărcat .bashrc: sursa ~/.bashrc

Când utilizați aliasul, este afișată următoarea eroare:

xxx@ip-1-2-3-4:~$ lsd
's: opțiunea nerecunoscută '--group-directories-first
Încercați „ls --help” pentru mai multe informații.

Verificat următoarele:

  • comanda completă va rula fără alias
  • alias funcționează atunci când se adaugă direct la fișierul ~/.bashrc

De asemenea verificat .bashrc citește în pseudonimele:

if [ -f ~/.bash_aliases ]; atunci
    . ~/.bash_aliases
fi

Întrebare: Cum pot folosi fișierul .bash_aliases peste ssh?

Am citit o întrebare similară, dar soluția de acolo nu pare să funcționeze: De ce aliasul meu nu funcționează prin ssh?

Vin dintr-un mediu Windows și tocmai acum încep să lucrez în lumea Linux; fii delicat.

Editați pentru context

The .bash_aliases fișierul a fost editat local pe Windows cu MobaTextEditor în timp ce ssh'd în server. Chiar dacă fișierul gol a fost creat pe server, codarea stilului Unix nu a fost implicată în editor, deoarece fișierul era gol. Codificarea Windows a fost adăugată la fișier după editare și salvare înapoi pe server cu MobaTextEditor.

drapel hr
Plasarea ciudată a ghilimelelor în mesajul de eroare sugerează că fișierul `.bash_aliases` are terminații de linie în stil DOS - verificați cu `file ~/.bash_aliases`
drapel cn
@steeldriver - revine ca `.bash_aliases: text ASCII, cu terminatoare de linie CRLF` - Ar trebui să-mi actualizez întrebarea, referitor la: rularea locală a Windows cu WSL și editarea fișierului cu MobaTextEditor. Ce este ciudat, este că am editat `.bashrc` cu MobaTextEditor și comanda fișierului a returnat `.bashrc: text ASCII`
drapel hr
A fost .bash_aliases un fișier nou? Este posibil ca MobaTextEditor să păstreze terminațiile de linie ale fișierelor existente (cum ar fi .bashrc) dar implicit la CRLF pentru fișierele noi.
drapel cn
@steeldriver - multumesc! Am actualizat MobaTextEditor la codificarea și formatul corecte; a reîncărcat totul și aliasurile funcționează din fișierul `bash_aliases` acum. Dacă vrei să dai un răspuns, îl voi accepta.
drapel hr
Mulțumesc - vezi mai jos
Puncte:2
drapel hr

Plasarea ciudată a ghilimelelor în mesajul de eroare sugerează că fișierul .bash_aliases are CRLF în stil DOS (de ex. \r\n) terminații de linie ex.

$ printf '%s\r\n' "alias lsd='ls -a -g --group-directories-first'" >> ~/.bash_aliases

$ fișier ~/.bash_aliases
/home/steeldriver/.bash_aliases: text ASCII, cu terminatoare de linie CRLF

$ . ~/.bash_aliases
$
$ lsd
's: opțiunea nerecunoscută '--group-directories-first
Încercați „ls --help” pentru mai multe informații.

Puteți remedia problema setând terminarea corespunzătoare a liniei UNIX în editorul dvs. de text sau prin trecerea fișierului dos2unix:

$ dos2unix ~/.bash_aliases
dos2unix: conversia fișierului /home/steeldriver/.bash_aliases în format Unix...

Va trebui apoi să faceți din nou sursa fișierului.

drapel cn
De mare ajutor. Mulțumesc și pentru sfatul `dos2unix`.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.