有没有办法只为某些目录创建别名?

时间:2018-03-26 19:20:18

标签: git macos unix

我正在寻找一种方法来分配仅在单个文件夹中运行的别名,并且可以通过git轻松转移。

我想象某种.aliases文件,我可以创建像ALIAS test=pytest[....]这样的内容,当他们从这个回购中获取时,这些内容会被其他人接收。

OSX终端本身可能是这样的东西,还是我需要某种第三方库/手动编辑每个人.bashrc / .zshrc

感谢您的帮助,如果有什么不清楚请告诉我!

1 个答案:

答案 0 :(得分:4)

这在本地是不可能的。这主要是出于安全原因 - 您不希望将项目cd下载到其目录中,并让它覆盖ls命令,以便ls将您的所有文件上传到黑客。

Mac和Linux有一个工具direnv,当您.envrc进入一个接近您想要的目录时,会自动将cd文件中的环境变量加载,但{ {1}} doesn’t support defining aliases/functions。 (并且首先需要安装direnv。)

以下是别名的一些替代方法,用于使相同的命令在不同的项目目录中运行不同的东西。您应该选择哪一个取决于您的项目及其生态系统的惯例。

Shell脚本

适用于许多编程语言但仅限于Unix的解决方案是包含shell脚本:

direnv
test

并告诉人们使用#!/usr/bin/env bash pytest ... 运行它。

您还可以将所有脚本放在./test等文件夹中,并告诉人们运行script

A script/test

如果您需要安装Make,则可以使脚本跨平台(这需要在脚本中避免使用特定于平台的命令)。您可以定义包含别名的Makefile

Makefile
Makefile

并告诉人们使用.PHONY: test test: pytest ... 运行它。

特定于语言的脚本,例如JavaScript的make test

某些语言有其他惯例。例如,如果您在NPM包管理器中使用JavaScript,那么惯例就是将脚本放在package.json中:

package.json
package.json

然后人们会尝试标准命令{ "name": "my-js-project", ..., "scripts": { "test": "node tests.js" }, } ,它会调用这个脚本。如果脚本具有非标准名称,则可以将其告知npm test