9

我在 .bashrc 文件中创建了一个别名:

alias java='java -Xmx1200m'

当我直接从我的 shell 运行 java 命令时,此别名有效。

但是,当 java 命令位于 bash 脚本 (script.sh) 中时,不会激活此别名。如何确保 .bashrc 文件中的别名在 bash 脚本中被接受?

4

5 回答 5

6

别名不会在非交互式 shell 中展开。

制作别名的唯一方法是使用包含别名的脚本来获取目标脚本。

$ source .bashrc
$ . custom_script.sh
于 2013-07-18T13:56:42.947 回答
4

引用bash 手册

当 shell 不是交互式的时,别名不会被扩展,除非 expand_aliasesshell 选项是使用设置的shopt(参见 Shopt Builtin)。

在您的脚本中说以下内容应该可以使其工作:

shopt -s expand_aliases
于 2013-07-18T14:03:09.667 回答
1

别名仅限于 shell,在执行的 shell 脚本中不起作用。你最好创建一个变量。

于 2013-07-18T13:50:12.050 回答
0

您可以在 bash bash 下以交互模式运行脚本;添加 -i 到 bash 命令行,就像这个脚本一样。现在你可以使用你的别名了。

#!/bin/bash -i 

alias lsd='ls -al | grep ^d' 

lsd 
于 2013-12-25T08:59:03.377 回答
0

最简单的答案是做两件重要的事情,否则它不会工作。在您的其他脚本中,执行以下操作:-i对于交互模式和如下所述的 shopt 部分。

#!/bin/bash -i

# Expand aliases defined in the shell ~/.bashrc
shopt -s expand_aliases

在此之后,您在 ~/.bashrc 中定义的别名将在您的 shell 脚本(giga.sh 或 any.sh)以及此类脚本中的任何函数或子 shell 中可用。

如果你不这样做,你会得到一个错误:

your_cool_alias: command not found
于 2017-07-06T23:50:11.870 回答