为什么我需要运行 source 命令来使 .bash_profile 别名可用?

为什么我需要运行 source 命令来使 .bash_profile 别名可用?

.bash_profile的如下:

alias l='ls -l'
alias p='pwd'
alias sites='cd /home/caveman/sites'
alias time_card='cd /home/caveman/sites/time-card/time-card'
alias ping='ping google.com'
alias bash_profile='gedit /home/caveman/.bash_profile'
alias webroot='cd /var/www'

每次我登录我的机器时我都需要运行source .bash_profile以使所有别名可用。

你们能找出问题出在哪里吗?

答案1

~/.bash_profile在登录会话中读取。

此外,拥有~/.bash_profile会阻止获取,这是Ubuntu 配置~/.profile中用于登录 shell 的首选文件。bash

当您登录显示管理器(我认为是 GDM)时,~/.profile默认情况下会读取(我不知道 GDM 是否遵循bash规则并读取~/.bash_profile(如果存在))。

即使~/.bash_profile从 GDM 读取,别名也不会被继承,因此图形终端中的 shell(不是登录 shell)无法看到它们。

解决方案是:将您的别名放入~/.bashrc,并且仅对非常简单的事情使用别名,否则使用函数。

该文件~/.bashrc由非登录交互式 shell 读取,并以 为源~/.profile,因此其内容也可在登录 shell 中使用。

答案2

您可以将别名添加到 ~/.bash_aliases

相关内容