#path #shell #env #profile #bash #cli-tool

app pathmerge

命令行 PATH 合并和去重工具

2 个版本

0.0.5 2023 年 8 月 20 日
0.0.4 2023 年 8 月 20 日

2751命令行工具

MIT 许可证

7KB
68

pathmerge

帮助输出

Usage: pathmerge [OPTIONS] [paths]...

Arguments:
  [paths]...  list of paths to include

Options:
  -d, --delimiter <delimiter>  Specify delimiter to use, bash ':', fish ' ' [default: :]
  -p, --path <path>            Path string [env: PATH=/home/user/bin:/usr/bin:/usr/local/bin:/usr/local/sbin]
  -s, --sort                   If the resulting output should be sorted
  -h, --help                   Print help
  -V, --version                Print version

使用示例

从环境变量中提取 PATH 并追加

PATH="/path1:/path2:/path3"
PATH="$(pathmerge /path4)"
echo $PATH
# output
/path1:/path2:/path3:/path4

提供 PATH 并追加

NEWPATH="$(pathmerge --path /a:/b:/c /z)"

echo $NEWPATH
# output
/a:/b:/c:/z

自动去重

UGLYPATH="/a:/b:/c:/a:/a:/c:/b:/c"
CLEANPATH="$(pathmerge --path $UGLYPATH)

echo $CLEANPATH
# output
/a:/b:/c

基于不同的分隔符进行合并/去重

PATH="/a /b /c /c /c"
NEWPATH="$(pathmerge --delimiter ' ' /z)"

echo $NEWPATH
# output
/a /b /c /z

排序

PATH="/c:/a:/b"
NEWPATH="$(pathmerge --sort)"

echo $PATH
# output
/a:/b:/c

附加信息

  • 指定 delimiter 不会改变输出中的分隔符,只会触发逻辑。
  • pathmerge 不会修改 shell 或环境中的任何内容,它只允许您操作格式化的 PATH 字符串并输出这些字符串。用户仍然需要将这些字符串推送到相应的环境变量中。例如,使用 PATH=$(pathmerge) 从环境变量中读取,去重后推回 PATH 变量。
  • pathmerge 主要期望由 .profiles.*rc 文件调用/使用。

NIX

进行中

依赖

~1.2–1.7MB
~33K SLoC