在CentOS中bash启动时如何自动设置别名?

时间:2016-08-02 01:46:53

标签: linux bash alias

当bash终端启动时,我希望它自动设置一些别名,但由于某种原因它们无法正常工作。

我有一个名为.bash_aliases的bash脚本,在我的.bashrc文件中,我有以下代码:

if [ -f .bash_aliases ]; then
        echo "bash_aliases file is here" 
        ./.bash_aliases
fi

在文件.bash_aliases中我有:

"creating alias for baaa"
alias baaa='echo "baaa"'

现在,当我启动终端时,我看到了:

bash_aliases file is here
creating alias for baaa

但是当我尝试命令时:

baaa

我明白了吗?

bash: baaa: command not found...

这有什么用? 但是,当我从终端做的时候,

[<>@<> ~]$ alias baaa='echo "baaa"'
[<>@<> ~]$ baaa
baaa

这是预料之中的。为什么在.bash_aliases文件中设置别名不起作用?我确保该文件是可执行的:sudo chmod 777 .bash_aliases

我正在使用CentOS 7.

1 个答案:

答案 0 :(得分:3)

标点符号很重要。要添加别名,您需要 source 定义它们的脚本,在当前shell中执行它们:

# WORKS: source file named bash_aliases in the current directory
. ./.bash_aliases       # POSIX-compliant syntax

...也写成......

# WORKS: source file named bash_aliases in the current directory
source ./.bash_aliases   # bash-only syntax

如果您执行以下操作:

# BROKEN: Run .bash_aliases as subprocess
./.bash_aliases

...它作为一个单独的脚本运行,当该脚本退出时,别名被遗忘。

顺便说一下 - 由于源脚本将其读入当前shell而不是作为单独的程序执行,这意味着它不需要文件权限才能执行。因此,您的.bash_aliases不需要也不应该拥有+x权限。