Bash

我可以使用(或創建)一個完全空的 Bash 文件來擴展 .bashrc 和 .profile 嗎?

  • December 14, 2018

我知道,原則上,一個人不應該改變,而應該更好地完成.bashrc像創建一個常見的改變。alias``.profile

當我租用一個以 Bash 作為主 shell 的新IaaS系統時,我採取的第一步是(擴展版本):

cat <<-EOF >> "$HOME"/.profile

   set -x && complete -r
EOF

source "$HOME"/.profile

“常式”到“子常式”內容之間的額外空行是因為.profile 已經包含一些數據,我想將我附加的新數據(可能超過單行set -x && complete -r)與已經- 呈現數據。

我需要另一個文件,它是空的,但也充當“引導文件”,類似於.bashrc並且.profile我可以在沒有額外空行的情況下附加數據。在 Ubuntu 16.04 (xenial) 中快速查看我的使用者目錄顯示沒有這樣的文件。

在另一個目錄中是否有我想要的文件,或者我應該自己創建一個?如果是這樣,請僅提示應該如何完成

我知道原則上不應該更改 .bashrc ,而像創建別名這樣的常見更改最好在 .profile 中完成。

這沒有任何意義。您可能誤解了您閱讀的內容。你沒有理由不改變.bashrc。相反,這是您的自定義文件。它就在那裡,所以可以把任何想要的東西放進去。你不必保留一開始的任何東西,你可以添加你想要的東西。

.profile並且.bashrc都是您的自定義文件,但它們具有不同的角色。.profile用於登錄時的東西,如環境變數。.bashrc用於 shell 配置,如別名和完成設置。

set -x僅用於調試。complete -x是 shell 自定義,而不是登錄時間設置,所以它進入.bashrc.

我需要另一個文件,它是空的,但也充當類似於 .bashrc 和 .profile 的“引導文件”,我可以將數據附加到其中

如果出於某種原因您想保留一開始的任何內容但又不想不斷修改現有文件,那麼您可以創建其他文件,並在其中放入指令.profile.bashrc包含您的文件。在.profile.bashrc中,您可以使用命令.(綽號“點”)後跟文件名來讀取該文件中的指令。例如,如果您想將所有自定義項放在一個名為的目錄中etc以便您可以快速部署它,那麼您可以執行以下操作:

  • 登錄時的東西,如環境變數進入~/etc/profile.
  • Bash 自定義進入~/etc/bashrc.
  • 您的首次部署程式碼可能是這樣的。
rsync -a remote-deployments/etc mynewhost.example.com/etc
ssh mynewhost.example.com -c <<'EOF'
grep -q -s -F '~/etc/profile' ~/.profile || echo '. ~/etc/profile' >>.profile
grep -q -s -F '~/etc/bashrc' ~/.bashrc || echo '. ~/etc/bashrc' >>.bashrc
EOF

沒有額外的空行。

你選擇在那裡放一個空行。它不會傷害任何東西。絕對沒有理由不放一個空行。但是,如果您不想要空行,那是您的選擇。不要把它放在那裡。

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