我对 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 的执行顺序。