我在 .bashrc 文件中创建了一个别名:
alias java='java -Xmx1200m'
当我直接从我的 shell 运行 java 命令时,此别名有效。
但是,当 java 命令位于 bash 脚本 (script.sh) 中时,不会激活此别名。如何确保 .bashrc 文件中的别名在 bash 脚本中被接受?
别名不会在非交互式 shell 中展开。
制作别名的唯一方法是使用包含别名的脚本来获取目标脚本。
$ source .bashrc
$ . custom_script.sh
引用bash 手册:
当 shell 不是交互式的时,别名不会被扩展,除非
expand_aliases
shell 选项是使用设置的shopt
(参见 Shopt Builtin)。
在您的脚本中说以下内容应该可以使其工作:
shopt -s expand_aliases
别名仅限于 shell,在执行的 shell 脚本中不起作用。你最好创建一个变量。
您可以在 bash bash 下以交互模式运行脚本;添加 -i 到 bash 命令行,就像这个脚本一样。现在你可以使用你的别名了。
#!/bin/bash -i
alias lsd='ls -al | grep ^d'
lsd
最简单的答案是做两件重要的事情,否则它不会工作。在您的其他脚本中,执行以下操作:-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