#shell #环境变量 #shell 环境 #bash #zsh #批处理 #ksh

setenv

为通过 shell 评估的工具编写辅助函数

3 个版本

使用旧的 Rust 2015

0.1.2 2018 年 5 月 19 日
0.1.1 2016 年 2 月 24 日
0.1.0 2016 年 2 月 24 日

文件系统 中排名 #902

CC0 许可

12KB
101

众所周知,程序无法修改其父 shell 的环境。但这很有用,我们可以使用一些技巧来实现这一点。几乎所有 shell 都支持以某种方式评估程序输出的方法(甚至 Windows),因此通过返回父 shell 评估的正确命令,我们可以应用这些更改。

安装

将以下内容添加到您的 Cargo.toml 文件中

[dependencies]
setenv = "0.1"

用法

此库提供两样东西

  1. 一些代码,用于尝试检测正在使用的 shell
  2. 执行某些操作所需的语法。

目前,仅支持两个命令:用于更改目录的 cd 和用于设置环境变量的 setenv

还提供了两个其他函数作为便利:split_env,它是 std::env::split_paths 的包装器,以及 set_env_list,它是 std::env::join_paths 的包装器。

示例

要使用所有这些功能,每个使用 setenv 的可执行文件都应包装在别名/函数/bat 文件中。以下是一些示例

Windows

for /f "tokens=*" %%I in ('d:\target\debug\myapp.exe  %*') do (
  %%I
)

Bash

function dothing() {
  eval `/target/debug/myapp "$@"`
}

Ksh

dothing() {
  eval `/target/debug/myapp "$@"`
}

Zsh

function dothing() {
  eval `/target/debug/myapp $*`
}

Tcsh

alias dothing 'eval `/target/debug/myapp \!*`'

注意

由于所有发送到 stdout 的文本都会由 shell 评估,因此必须非常小心地控制打印到 stdout 的内容。所有面向用户的消息都应发送到 stderr。

许可

http://creativecommons.org/publicdomain/zero/1.0/

在法律允许的范围内,Andrew Chin 已放弃 setenv 的所有版权和相关或邻近权利。此作品发布于:美国。

无运行时依赖