Bash
初始登錄時未獲取 Bash 別名
我在 virtualbox vm 上執行 Debian 8.5 (Jessie)。當我最初登錄到我的虛擬機時,我有一些無法執行的 bash 別名。但是,當我
bash
從外殼內部執行時,它們會起作用。如何配置我的系統以使它們在啟動時工作?yourstruly@mate:~$ tail ~/.bash_aliases alias quit='exit' alias reboot='sudo shutdown -r now' alias halt='sudo shutdown -h now' yourstruly@mate:~$ halt -bash: halt: command not found yourstruly@mate:~$ bash yourstruly@mate:~$ halt Connection to localhost closed by remote host. Connection to localhost closed.
我已將行放入
.bashrc
include.bash_aliases
中。yourstruly@mate:~$ tail ~/.bashrc if [ -f ~/.bash_include ]; then . ~/.bash_include fi if [ -f ~/.bash_alias ]; then . ~/.bash_alias fi
當 bash 啟動互動式登錄shell 時,它會執行以下文件中的第一個:
~/.bash_profile
、~/.bash_login
和~/.profile
.相比之下,
~/.bashrc
只為互動式非登錄shell 執行。解決方案是獲取您實際使用的、和
~/.bashrc
中的任何一個。像這樣添加一行:~/.bash_profile``~/.bash_login``~/.profile
if [[ $- = *i* ]]; then . ~/.bashrc; fi
特殊變數
$-
包含活動 shell 選項,互動式 shell 包含i
在活動選項列表中。因此,此來源~/.bashrc
適用於互動式外殼,並且僅適用於互動式外殼。