Bash
Bash 別名未在 Debian 上傳入,但在 Mint 上它們在 sudo -s 時載入
ls
兩台機器上都定義了完全相同的別名:$ cat ~/.bash_aliases | grep -e "alias ls=" -e "alias l=" -e "alias lll=" alias ls='\ls --kibibytes --color=always --group-directories-first' alias l='ls' alias lll='l -la'
Linux Mint (18.1)
(我坐在這台機器前。)
$ sudo -s [sudo] password for ... $ lll (very long list of files)
GNU/Linux Debian Stretch(9,測試)
(我
ssh
到這台機器。)$ ssh username@ip_address_of_server -p port_number $ sudo -s [sudo] password for ... $ lll lll: command not found
問題
我如何實現
sudo -s
在 Debian 上獲取我的個人別名的目標,就像在 Linux Mint 上一樣?
sudo -s
解釋
sudo -s
我的 Linux Mint 上的源別名,而sudo -i
或su
不su -
。它在 Linux Mint 上為我的目的工作,我定義了很多有用的別名,我希望它也能在我的 Debian 伺服器上工作。
您需要
.bash_alias
在正確的 shell 初始化文件中獲取該文件。初始化文件因 shell 的啟動方式而異。通過 ssh 和在本地機器上呼叫它是不同的。但隨後再次呼叫它sudo -s
會使兩台機器上的它相同,因為它啟動了一個互動式非登錄 root shell。但是要獲得相同的別名,您需要具有相同的定義。如果您堅持使用
sudo -s
,只需.bash_aliases
在 ssh 使用者的.bashrc
. 因此,將這一行添加到~/.bashrc
:. ~/.bash_aliases
請注意,
lll
別名在您之前在您的 Mint 上工作sudo -s
,而在 Debian 上不會這樣做,因為這是一個 ssh 會話,所以是一個登錄 shell,而在 Mint 上它只是互動式的。如果您希望別名在 ssh Debian 上立即可用,則必須將另一個來源添加到您的.profile
文件中。這是相當複雜的,要了解整個情況,您需要閱讀並了解登錄和互動式 shell。
man bash
擁有一切。您可以查看此答案以了解這是關於什麼的。不要跳過該答案下方的評論!