.bashrc 中的别名

.bashrc 中的别名

我对 UNIX 完全陌生,所以如果这个问题非常愚蠢,请原谅我。

我刚刚开始实习,在那里我被授予了访问构建服务器的权限。我想在登录时默认在我的环境中包含某些别名。据我所知,这样做的方法是将它们包含在我的 $HOME 目录中的 .bashrc 文件中。但这似乎不起作用。我读到过只有交互式 shell 和用户脚本才能读取它,这就是它不起作用的原因吗?我正在运行 Bash。那么我该怎么做呢?

提前致谢!

答案1

iman453,文件需要命名为 .bashrc 和 .bash_profile。文件前面的句点表示它是隐藏的。您知道构建服务器运行的是哪个版本的 Unix 或 Linux 吗?

在我的主目录中我有

.
|-- .bash_history
|-- .bash_logout
|-- .bash_profile
|-- .bashrc
|-- .mozilla
|   |-- extensions
|   `-- plugins
|-- .ssh
|   |-- .config
|   |-- authorized_keys
|   |-- authorized_keys2
|   `-- known_hosts
|-- .viminfo
|-- .vimrc

我的 .bashrc 文件的内容是:

# .bashrc

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

# User specific aliases and functions
alias chknag='sudo /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg'
alias ducks='sudo du -cksh * | sort -n | head -50'

.bash_profile的内容:

# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin:/usr/sbin:/usr/bin:/sbin

export PATH

当我通过身份验证通过 SSH 进入这台机器时,我可以访问别名 ducks。

答案2

在您的 中${HOME}/.bash_profile,添加以下内容:

# source the users bashrc if it exists
if [ -e "${HOME}/.bashrc" ] ; then
  source "${HOME}/.bashrc"
fi

答案3

man bash

当 bash 作为交互式登录 shell 或使用 --login 选项作为非交互式 shell 调用时,它首先从文件 /etc/profile 中读取并执行命令(如果该文件存在)。读取该文件后,它会按顺序查找 ~/.bash_profile、~/.bash_login 和 ~/.profile,然后从第一个存在且可读的文件中读取并执行命令。

当启动非登录 shell 的交互式 shell 时,bash 会从 /etc/bash.bashrc 和 ~/.bashrc 读取并执行命令(如果这些文件存在)。

例如,如果您通过图形用户界面登录,然后启动运行 Bash 的终端,那么您就处于“非登录 shell 的交互式 shell”中。

答案4

您必须从 bash_profile 调用 .bashrc。请参阅此处交互式登录 shell 的执行顺序

相关内容