2016-08-02 22 views
-1

当bash终端启动时,我希望它自动设置一些别名,但由于某些原因,它们无法正常工作。如何在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 

但是当我试试co命令:

baaa 

我明白了吗?

bash: baaa: command not found... 

这是什么意思? 然而,当我从终端做,

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

预计。为什么不在.bash_aliases文件中设置别名?我确定该文件是可执行的:sudo chmod 777 .bash_aliases

我使用的是CentOS 7.

+0

你知道'source'命令的作用吗? '.'是'source'命令的别名。 –

+1

绝对不需要使文件可执行。 (并且不要**使用'chmod 777',它可以写入系统中的每个帐户;这包括匿名帐户,例如'nobody',用于 - 除其他外 - 用于对不可信验证代码进行沙盒)。 –

+0

只允许足够的DAC权限用于文件和文件夹。 '777'正在招惹麻烦。请参阅[\ [this \]](http://www.tldp.org/LDP/intro-linux/html/sect_03_04.html)。 – sjsam

回答

3

标点符号很重要。要添加的别名,你需要脚本定义它们,在当前的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 

...它作为单独的脚本运行,并且阿里当脚本退出时,Ases被遗忘。


顺便说一句 - 因为采购的脚本读取它到当前的外壳,而不是执行它作为一个单独的程序,这意味着它不需要文件权限设置为可执行。因此,您的.bash_aliases不需要也不应该具有+x权限。

相关问题