我可以让脚本使用别名而不是命令吗?

phu*_*ehe 8 alias shell-script

我有一个命令的别名(我正在设置 Python 开发环境)

alias python=~/virtualenv/bin/python
Run Code Online (Sandbox Code Playgroud)

这样我~/virtualenv/bin/python只需输入python. 现在在我的项目中有一个 shell 脚本,例如:

#!/bin/sh
python run-project.py
Run Code Online (Sandbox Code Playgroud)

我可以让脚本使用我的别名python而不是python它在 中找到的别名$PATH,而不对脚本进行更改吗?

Mik*_*kel 7

是的。

如果你把你的别名放在~/.aliases,那么你可以做

export BASH_ENV="~/.aliases"
somescript
Run Code Online (Sandbox Code Playgroud)

这假设您的脚本以 开头#!/bin/bash,因为#!/bin/sh它的可预测性稍差。

这是我的建议:

  1. 创建 ~/.bashenv
  2. 将您要在脚本中使用的所有设置从 ~/.bashrc 移动到 ~/.bashenv
  3. 将此添加到您的 ~/.bashrc 顶部:
    [ -f ~/.bashenv ] && source ~/.bashenv
  4. 放入BASH_ENV=~/.bashenv/etc/environment
  5. #!/bin/bash如果您的脚本还没有,请让它们开始

或者,如果您使用 zsh,只需将您的别名移动到 ~/.zshenv 中。zsh 自动查找该文件。


但也许只是把它更容易~/virtualenv/bin的前部附近PATH,然后改变你的Python脚本有#!/usr/bin/env python作为第一行。