~pi/aka

ref: 3df4dafd9586314521f49539af6b4a2c2cdfbaf9 aka/README -rw-r--r-- 2.0 KiB
3df4dafdPaul Ivanov implement AKA_FILE 1 year, 3 months ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# Also Known As

Simple, persistent, shell-based command aliasing

Usage: aka alias               show stored aliases
       aka alias NAME CMD...   store an alias for CMD
       aka NAME [...]          run CMD, optionally with more arguments

By default, aliases are stored in the `.aka` file of the current working
directory. Optionally, the location of that file can be modified by setting the
AKA_FILE enviornment variable.


Examples:

    $ aka alias demo more

    $ aka demo --version
    more from util-linux 2.36

    $ aka alias demo git

    $ aka demo --version
    git version 2.28.0

The command you alias can have parameters

    $ aka alias l ls -f

    $ aka l
    .aka .. aka aka_tiny . README .git

And you can pass additional parameters

    $ aka l -tR
    .. aka_tiny aka .git .aka README .

You can see all of the currently stored aliases

    $ aka alias
    l='ls -f'
    demo='git'

And edit them using your favorite text editor

    $ cat .aka
    alias demo='git'
    alias l='ls -f'

Everything that is not aliased will get executed as a regular command.

    $ aka python3 --version
    Python 3.8.6


## How it works

aka gets executed via /bin/sh, sources AKA_FILE and evals the positional
parameters, thus applying aliases and whatever other shell script shenanigans
stored in AKA_FILE.

For example, this means that you can put something like

    alias my='AKA_FILE=~/.my_rc aka'

in your shell's startup files, and thereafter use the `my` command as an `aka`
invocation that always sources ~/.my_aliases file in your home directory,
regardless of where you run it.

## Notes

Initial prototype uses aliases, which may not work for programs that depend on
establishing their behavior based on the `argv[0]` name they were called by
(busybox, for example).


## Ideas

[x] AKA_FILE environment variable set to the file containing the desired
    shellscript file to source. Otherwise we look for the `.aka` file in the
    current directory.

[ ] `aka unalias` command?