|
|
@ -1,5 +1,24 @@ |
|
|
|
### Experimental |
|
|
|
|
|
|
|
## What is this? |
|
|
|
|
|
|
|
I am experimenting with the idea of a distributed shell history. The goal is to |
|
|
|
be able to search your shell history across different bash processes easily. |
|
|
|
And potentially different computers. |
|
|
|
|
|
|
|
This uses UNIX Domain Sockets to communicate with a server written in Racket. |
|
|
|
Each Racket thread corresponds to a shell process, and they receive shell |
|
|
|
commands as messages. If you want to get the history for a given process, you |
|
|
|
simply send a message to a thread and then it sends you back the history. |
|
|
|
|
|
|
|
Unix Domain Sockets are ideal for this, as they are less likely to conflict |
|
|
|
with other services running on the machine (you specify a path, not a port). As |
|
|
|
well, they are more robust than FIFOs because they can handle multiple |
|
|
|
concurrent connections easily. |
|
|
|
|
|
|
|
At some point in the future, part of this may be rewritten in C, Pony, or |
|
|
|
Erlang, or a combination of all three. |
|
|
|
|
|
|
|
1. Compile `server.rkt` with `raco exe server.rkt` |
|
|
|
2. Run `./server` |
|
|
|
3. Run `source shelltalk.sh` |
|
|
|