当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.
答案 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
权限。