Linux 如何在CentOS中启动bash时自动设置别名?
当bash终端启动时,我希望它自动设置一些别名,但由于某些原因,它们不能正常工作 我有一个名为Linux 如何在CentOS中启动bash时自动设置别名?,linux,bash,alias,Linux,Bash,Alias,当bash终端启动时,我希望它自动设置一些别名,但由于某些原因,它们不能正常工作 我有一个名为.bash\u别名的bash脚本,在我的.bashrc文件中,我有以下代码: if [ -f .bash_aliases ]; then echo "bash_aliases file is here" ./.bash_aliases fi 在文件.bash\u别名中我有: "creating alias for baaa" alias baaa='echo "baa
.bash\u别名
的bash脚本,在我的.bashrc
文件中,我有以下代码:
if [ -f .bash_aliases ]; then
echo "bash_aliases file is here"
./.bash_aliases
fi
在文件.bash\u别名中
我有:
"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
[@~]$alias baaa='echo“baaa”'
[@~]$baaa
巴阿
这是意料之中的。为什么在.bash\u alias
文件中设置别名不起作用?我确保该文件是可执行的:sudo chmod 777.bash\u别名
我用的是CentOS 7 标点符号很重要。要添加别名,您需要获取定义别名的脚本源代码,并在当前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\u别名
不需要也不应该具有+x
权限。您知道源代码
命令的功能吗
是source
命令的别名。完全不需要使文件可执行。(永远不要使用chmod 777
,它会写入系统上的每个帐户;这包括匿名帐户,例如nobody
,用于(除其他外)沙箱不受信任的身份验证代码)。允许对文件和文件夹具有足够的DAC权限<代码>777会招来麻烦。看见