我在 .bashrc 文件中创建了一个别名:
alias java='java -Xmx1200m'
当我直接从shell运行java命令时,这个别名可以工作。
然而,当java命令在bash脚本(script.sh)中时,这个别名不会被激活。我该如何确保.bashrc文件中的别名在bash脚本中被接受?
非交互式 shell 不会展开别名。
制作别名的唯一方法是使用包含别名的目标脚本来源代码另一个脚本。
$ source .bashrc
$ . custom_script.sh
引用自bash手册:
当shell不是交互式的时候,别名不会被扩展,除非使用
shopt
(参见“Shopt内置命令”)设置了expand_aliases
shell选项。
在您的脚本中添加以下内容即可使其正常工作:
shopt -s expand_aliases
expand_aliases
已经默认开启。 - Ain Tohvrishopt -s expand_aliases
之后,我意识到了。现在可以工作了,谢谢! - Ain Tohvri-i
以交互模式运行,并按照下面提到的 shopt 部分进行操作。#!/bin/bash -i
# Expand aliases defined in the shell ~/.bashrc
shopt -s expand_aliases
your_cool_alias: command not found
别名仅限于shell,并且在执行的shell脚本中无法使用。最好创建一个变量。
.bashrc
中使用export java='java -Xmx1200m'
怎么样? - fedorqui你可以在交互模式下运行你的脚本,使用bash命令并添加-i参数,就像这个脚本一样。现在你可以使用你的别名。
#!/bin/bash -i
alias lsd='ls -al | grep ^d'
lsd