supergra odpowiedział na główny punkt, ale może cię zastanawiać, dlaczego widzisz, że twój tekst powrócił do ciebie, mimo że zmienna nie została ustawiona. Oznacza to, że na końcu swojego aliasu masz echo $x
i rzeczywiście widzisz no
po wpisaniu oh no
, ale to nie znaczy, że echo odtwarza tę zmienną.
Co się tam dzieje jest to, że echo
drukuje zmienną (pusty), ale potem echo
jest także łowienie „nie” część oddzielnie. Jeśli wykonasz alias tmp 'echo $1'
i wypróbujesz tmp hi
, wydrukujesz "hi", ponieważ brzmi to tak, jakbyś zrobił "echo 1 hi".
Aby zobaczyć to jaśniej, spróbuj ponownie alias tmp 'echo abc $1 def '
i wykonaj tmp hi
, a wydrukujesz "abc def hi". Ponownie, jeśli spróbujesz alias tmp 'echo $1 & which '
i użyjesz go ponownie, powinieneś, chyba że masz komendę o nazwie hi
, zobaczyć coś takiego jak "hi: Command not found." lub jeśli wykonasz tmp ls
zobaczysz wyjście which ls
.
Jeszcze jeden przykład: try alias tmp 'echo $1 & '
i tmp hi
, aby zobaczyć, że rzeczywiście próbuje wykonać hi
jakby to było polecenie, które mogą być niebezpieczne, jeśli nie spodziewaliśmy się tego.
O dziwo, zadałem to pytanie po przeczytaniu zaakceptowanej odpowiedzi. –