[linux] onwillige alias

Oscar Roozen linux op okkie.nu
Wo Nov 20 08:38:01 CET 2024


[Iets uitgebreidere reply met wat hopelijk leerzame informatie]

> On 19/11/2024 13:22, Julien Michielsen via Linux wrote:
>> Ik heb een alias voor less:
>> alias l='l=less $1'
>> Die doet het prima wanneer ik "alias l" intoets.

Wat bedoel je met "doet het prima"? Je hebt een alias 'l' gemaakt, en die 
zie je terug als 'je alias l' intikt. So far so good.

Maar waarom maak je 'l' een alias voor 'l=less $1'?

Die $1 gaat toch al niet werken, zoals Paul ook al schreef. Als je toch iets 
wil doen met parameters, kijk dan naar bash functions. Maar waarom wil je 
'l' vervangen door 'l=less'?


>> maar doe ik
>> l /etc/pulse/client.conf
>> dan krijg ik
>> bash: /etc/pulse/client.conf: Permission denied

Dat is logisch. Bash probeert die conf file te executen en die heeft 
waarschijnlijk niet de x-bit aanstaan. Daarom die 'permission denied'.

Je l is keurig vervangen door 'l=less', wat nu feitelijk een assignment voor 
een variabele is. Je kan in bash environmentvariabelen meegeven aan een 
commando zonder ze te exporteren, door de assignment voor het commando te 
zetten. Bash zet dus de variabele 'l' naar de waarde 'less' en probeert 
vervolgens die conf uit te voeren.

De $1 in je alias was overigens leeg omdat jouw interactieve shell geen 
positionele parameters had. Die viel dus weg. Uiteindelijk probeerde bash 
dit uit te voeren:

   l=less /etc/pulse/client.conf

Probeer voor de gein eens:

   l env

Het commando 'env' laat je (geexporteerrde) environment zien. Daar staat nu 
ergens ook l=less tussen.


>> Wat moet ik doen om l wél te laten aliassen?

   alias l=less



Meer informatie over de Linux maillijst