3 个版本
使用旧的 Rust 2015
0.1.2 | 2018 年 5 月 19 日 |
---|---|
0.1.1 | 2016 年 2 月 24 日 |
0.1.0 | 2016 年 2 月 24 日 |
在 文件系统 中排名 #902
12KB
101 行
众所周知,程序无法修改其父 shell 的环境。但这很有用,我们可以使用一些技巧来实现这一点。几乎所有 shell 都支持以某种方式评估程序输出的方法(甚至 Windows),因此通过返回父 shell 评估的正确命令,我们可以应用这些更改。
安装
将以下内容添加到您的 Cargo.toml
文件中
[dependencies]
setenv = "0.1"
用法
此库提供两样东西
- 一些代码,用于尝试检测正在使用的 shell
- 执行某些操作所需的语法。
目前,仅支持两个命令:用于更改目录的 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。
许可
在法律允许的范围内,Andrew Chin 已放弃 setenv 的所有版权和相关或邻近权利。此作品发布于:美国。