【发布时间】:2018-06-20 02:10:59
【问题描述】:
我已经在使用 makefile,我希望能够使用它来存储一些有用的别名,然后用户可以调用这些别名。我知道我可以使用已经内置的别名制作一个 bash 文件,然后使用源代码运行它,这样我就可以执行以下操作:
# File: aliases.sh
alias useful="command to run"
alias also-useful="another command -to run"
然后我可以在当前终端会话中运行它:
source ./aliases.sh
使用 Makefile
所以我希望通过 makefile 实现类似的功能,我希望有一个简单的 aliases 条目,这样用户就可以运行:
make aliases
如果可能的话,我宁愿避免添加额外的文件,因为我不想为这些简单的任务添加额外的文件。如果您有任何更好的建议,我也愿意倾听。
【问题讨论】:
-
source ./aliases.sh有什么问题? -
我希望这可以作为我构建过程的一部分。因此,如果用户调用
make development,它将运行开始开发所需的各种任务。将这些别名添加为他们的开发环境的前置步骤会很好。我也只是不希望文件混乱,因为我有一些这样的用例,所以最好有一个文件来处理它。 -
你想要
aliases而不是recipes对吧?通常aliases通过系统范围的 shell 设置或通过用户配置文件或运行控制文件(例如~/.bashrc)在每个用户的基础上处理。这是必要的,因为它们会影响 shell 环境,无论是通过后续脚本还是 makefile,都不会影响父级环境(例如用户的 shell)。登录后设置其他别名的唯一方法是在命令行中输入source,否则别名只会出现在特定的子shell中。所以有点不清楚你想要什么。 -
是的,我确实想向父 shell 添加命令,MadScientist 指出,如果不运行源代码,这是不可能的。我想我只需要编写一个 shell 脚本来为我执行此操作。
-
你想要一个 shell function 来创建 shell functions,而不是 shell script 来创建 aliases。 学会拥抱函数并避免别名;后者非常有限,通用性较差。