7 releases
0.1.3 | Jan 24, 2024 |
---|---|
0.1.1 | Apr 13, 2023 |
0.1.0 | Aug 17, 2022 |
0.0.4 | Aug 5, 2022 |
0.0.2 | May 8, 2022 |
#1081 in Command line utilities
47KB
1.5K
SLoC
printenv2
A printenv
rewrite in Rust.
Advantages over classic implementations
- Rich-format output
- Colored mode
- Sort mode: output can be sorted by environment variable names
- Escape mode:
- Single-line: escape line break characters
- Unprintable characters
- JSON mode
- Remote mode. See notes
- Cross-platform
Installation
- via package managers:
- Arch Linux:
paru -S printenv2
- Arch Linux:
- via Cargo: Run
cargo install printenv2
if you already have Rust development environment setup.
Notes on Remote Mode
printenv2
can read environment variables of another running process.
Basic usage:
# Make sure you have the privilege to inspect the target process.
printenv2 --pid 1000
Platform-specifics:
Platform | Environment variables at startup | Environment variables in present |
---|---|---|
Linux | printenv2 --pid <PID> |
Unsafe[^1].printenv2 --debugger-helper generates a shell script for that using gdb .sh <(printenv2 --debugger-helper=gdb) <PID> | printenv2 --load - .sudo is likely required. |
Windows | Unsupported. | Unsafe[^1].printenv2 --pid <PID> |
Unix (*BSD) | printenv2 --pid <PID> |
Unsafe[^1].printenv2 --debugger-helper generates a shell script for that using gdb .sh <(printenv2 --debugger-helper=gdb) <PID> | printenv2 --load - .sudo is likely required. |
macOS | printenv2 --pid <PID> |
Unsupported. |
Other | Unsupported. | Unsupported. |
[^1]: Be careful. These methods either requires the process to be suspended for memory access; or they use undocumented APIs which may not work in the future.
License
MIT
Dependencies
~2–45MB
~652K SLoC