我有一个命令的别名(我正在设置 Python 开发环境)
alias python=~/virtualenv/bin/python
这样我~/virtualenv/bin/python
只需输入即可运行python
。现在我的项目中有一个 shell 脚本,例如:
#!/bin/sh
python run-project.py
我可以让脚本使用我的别名python
而不是它python
在 中找到的别名$PATH
,而不对脚本进行更改吗?
答案1
是的。
如果你把你的别名放进去~/.aliases
,那么你可以这样做
export BASH_ENV="~/.aliases"
somescript
这假设您的脚本以 开头#!/bin/bash
,因为#!/bin/sh
有点难以预测。
这是我的建议:
- 创建~/.bashenv
- 将您想要在脚本中使用的所有设置从 ~/.bashrc 移至 ~/.bashenv
- 将其添加到 ~/.bashrc 的顶部:
[ -f ~/.bashenv ] && source ~/.bashenv
- 放入
BASH_ENV=~/.bashenv
/etc/environment #!/bin/bash
如果您的脚本尚未启动,请让它们以
或者,如果您使用 zsh,只需将别名移至 ~/.zshenv 即可。 zsh 自动查找该文件。
但也许更容易放在~/virtualenv/bin
的前面PATH
,然后更改 Python 脚本以将其#!/usr/bin/env python
作为第一行。
答案2
假设您的别名文件是“~/.bash_别名”,将其放入您的脚本中:
#!/bin/bash
shopt -s expand_aliases
source ~/.bash_aliases
python run-project.py
(通过)
答案3
或者,您始终可以source
在脚本中强制使用别名。例如,假设rm
您的 中有一个别名~/.bashrc
:
alias rm='moveToTrash'
whilemoveToTrash
是您的/usr/bin
.现在您有一个名为test.bash
如下的脚本:
#!/bin/bash
which rm
当test.bash
直接执行时,可以看到输出/bin/rm
,whilesource test.bash
会得到输出
alias rm='moveToTrash'
/usr/bin/moveToTrash