printenv2

Crates.ioprintenv2
lib.rsprintenv2
version0.1.3
sourcesrc
created_at2022-05-03 22:52:11.718775
updated_at2024-01-24 14:52:57.097132
descriptionA printenv rewrite in Rust
homepage
repositoryhttps://github.com/Xinkai/printenv2/
max_upload_size
id580054
size65,875
Xinkai Chen (Xinkai)

documentation

README

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

Commit count: 21

cargo fmt