3 stable releases
1.0.4 | Jan 25, 2024 |
---|---|
1.0.3 | Feb 2, 2022 |
1.0.2 | Sep 9, 2021 |
1.0.1 |
|
1.0.0 |
|
#2711 in Command line utilities
32KB
424 lines
viro
Loads your environment so you don't have to.
Offers a data structure for serializing and deserializing environment variables, to allow for easy
loading of /etc/profile
scripts in non-POSIX shells like fish
. The viro
binary is only
available for unix-based systems at the moment; see the "Roadmap" section of this README for
details.
License
Available via the Anti-Capitalist Software License for individuals, non-profit organisations, and worker-owned businesses.
Installation
First, build viro
for your system with the sync-stdio
feature and install it in /usr/bin
,
alongside the viro-profile
script.
Depending on whether you want to use systemd or no d, merge the /usr
provided in either
systemd/usr
or nod/usr
with your own.
Usage
Because bash does not have a standardized config directory, you will need to source the scripts in
/usr/share/bash/bashrc.d
in order to make this work. If you chose to use systemd, you must also
enable the profile.service
for your user.
Roadmap
For now, the viro
crate has no actual support for converting environment variables into byte
sequences, and the viro
binary simply assumes that the conversion is trivial, as it is on
POSIX-compliant systems. However, on systems like Windows, a more complicated conversion will be
necessary to convert between genuine environment variables and byte slices using a format like
WTF-8.
Additionally, there are currently no attempts to escape \x3D
(equals sign) and \x00
(NUL) bytes
when outputting variables, and this simply alters the output. A future version of this crate will
want to offer these, but I have no plans to implement this at the moment.
Dependencies
~3–12MB
~160K SLoC