我正在使用Fedora 20图形桌面。我发现放在.bash_profile中的别名没有效果。然后我发现图形终端不是登录shell,因此根本不读取bash_profile。
现在我很奇怪 export 命令在.bash_profile中有效。
我的.bash_profile如下:
#bash_profile
export mytest=bash_profileIsRead
alias kk=ls
测试结果:
$ shopt login_shell
login_shell off
$ echo $mytest
bash_profileIsRead
$ kk
bash: kk: command not found...
答案 0 :(得分:3)
别名不像环境变量那样继承。它们不应放在配置文件中,而应放在.bashrc文件中。
基本上,.profile(或.bash_profile)用于继承的内容(例如env变量),而rc文件用于必须在非登录shell中重新初始化的内容,例如别名。
答案 1 :(得分:3)
这没有什么不寻常或令人惊讶的。
您的.bash_profile
每个会话由您的登录shell运行一次。 不由会话中稍后运行的其他shell运行。
.bashrc
由每个交互式shell实例运行,因此放置在那里的别名和shell函数将在整个会话期间得到尊重。
环境变量只需要设置一次,因为它们是由子进程继承的(每个子进程,而不仅仅是shell!)。别名不是继承的,因此需要在每个shell中设置它们。
有关详情,请参阅the DotFiles page on the wooledge.org wiki(由irc.freenode.org的#bash频道维护)。