bash脚本没有在bashrc中读取别名

时间:2013-07-18 13:45:36

标签: bash alias

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

alias java='java -Xmx1200m'

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

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

5 个答案:

答案 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