我正在寻找一种方法来分配仅在单个文件夹中运行的别名,并且可以通过git轻松转移。
我想象某种.aliases
文件,我可以创建像ALIAS test=pytest[....]
这样的内容,当他们从这个回购中获取时,这些内容会被其他人接收。
OSX终端本身可能是这样的东西,还是我需要某种第三方库/手动编辑每个人.bashrc
/ .zshrc
?
感谢您的帮助,如果有什么不清楚请告诉我!
答案 0 :(得分:4)
这在本地是不可能的。这主要是出于安全原因 - 您不希望将项目cd
下载到其目录中,并让它覆盖ls
命令,以便ls
将您的所有文件上传到黑客。
Mac和Linux有一个工具direnv
,当您.envrc
进入一个接近您想要的目录时,会自动将cd
文件中的环境变量加载,但{ {1}} doesn’t support defining aliases/functions。 (并且首先需要安装direnv
。)
以下是别名的一些替代方法,用于使相同的命令在不同的项目目录中运行不同的东西。您应该选择哪一个取决于您的项目及其生态系统的惯例。
适用于许多编程语言但仅限于Unix的解决方案是包含shell脚本:
direnv
test
并告诉人们使用#!/usr/bin/env bash
pytest ...
运行它。
您还可以将所有脚本放在./test
等文件夹中,并告诉人们运行script
。
script/test
如果您需要安装Make,则可以使脚本跨平台(这需要在脚本中避免使用特定于平台的命令)。您可以定义包含别名的Makefile
:
Makefile
Makefile
并告诉人们使用.PHONY: test
test:
pytest ...
运行它。
make test
某些语言有其他惯例。例如,如果您在NPM包管理器中使用JavaScript,那么惯例就是将脚本放在package.json
中:
package.json
package.json
然后人们会尝试标准命令{
"name": "my-js-project",
...,
"scripts": {
"test": "node tests.js"
},
}
,它会调用这个脚本。如果脚本具有非标准名称,则可以将其告知npm test
。