Bash

Bash 別名未在 Debian 上傳入,但在 Mint 上它們在 sudo -s 時載入

  • April 8, 2019

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 -isusu -

它在 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擁有一切。您可以查看此答案以了解這是關於什麼的。不要跳過該答案下方的評論!

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