Bash

初始登錄時未獲取 Bash 別名

  • September 5, 2016

我在 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.

我已將行放入.bashrcinclude.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適用於互動式外殼,並且僅適用於互動式外殼。

引用自:https://unix.stackexchange.com/questions/307870