[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