Skip to content

Xinkai/printenv2

Repository files navigation

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
  • 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> Unsafe1.
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. Unsafe1.
printenv2 --pid <PID>
Unix (*BSD) printenv2 --pid <PID> Unsafe1.
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.

License

MIT

Footnotes

  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. 2 3