我在.bashrc文件中创建了一个别名:
alias java='java -Xmx1200m'
当我直接从shell运行java命令时,此别名有效。
但是,当java命令位于bash脚本(script.sh)中时,此别名不会被激活。如何确保在bash脚本中接受.bashrc文件中的别名?
答案 0 :(得分:5)
别名未在非交互式shell中展开。
创建别名的唯一方法是使用包含别名的脚本来源目标脚本。
$ source .bashrc
$ . custom_script.sh
答案 1 :(得分:4)
引用bash manual:
当shell不是交互式时,不会扩展别名,除非 使用
expand_aliases
设置shopt
shell选项(请参阅The Shopt 内建)。
在脚本中说出以下内容应该可以正常工作:
shopt -s expand_aliases
答案 2 :(得分:1)
别名仅限于shell,不适用于已执行的shell脚本。你最好创建一个变量。
答案 3 :(得分:0)
您可以在交互模式下以bash bash运行脚本;添加-i到bash命令行,就像这个脚本一样。现在你可以使用你的别名了。
#!/bin/bash -i
alias lsd='ls -al | grep ^d'
lsd
答案 4 :(得分: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