是否有一个完全空的 Bash 文件我可以使用(或创建)来扩展 .bashrc 和 .profile?

是否有一个完全空的 Bash 文件我可以使用(或创建)来扩展 .bashrc 和 .profile?

我知道原则上,一个人不应该改变.bashrc,而像创建一个这样的常见改变alias应该更好地进行.profile

当我租新房时基础设施即服务以 Bash 作为主 shell 的系统,我采取的第一步是(扩展版本):

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

    set -x && complete -r
EOF

source "$HOME"/.profile

“例程”和“子例程”内容之间的额外空行是因为.profile 已经包含一些数据,并且我想将我附加的新数据(可以超过 的单行set -x && complete -r)与其余已存在的数据分开。

我需要另一个文件,该文件是空的,但也充当“启动文件”,类似于.bashrc并且.profile我可以在其中附加数据而无需额外的空行。快速查看 Ubuntu 16.04 (xenial) 中的用户目录,发现没有这样的文件。

另一个目录中是否有我想要的文件,或者我应该自己创建一个文件?如果是这样,请仅提示应该如何完成

答案1

我知道原则上不应该更改 .bashrc,而创建别名等常见更改最好在 .profile 中完成。

这没有任何意义。您可能误解了您所读到的内容。你没有理由不改变.bashrc。相反,这是你的定制文件。它就在那里,所以可以放任何东西想要在里面。您不必保留一开始就有的内容,您可以添加您想要的内容。

.profile.bashrc都是您的自定义文件,但它们具有不同的作用。.profile用于登录时的事情,例如环境变量。.bashrc用于 shell 配置,例如别名和完成设置。

set -x仅用于调试。complete -x是 shell 自定义,而不是登录时设置,因此它进入.bashrc.

我需要另一个文件,该文件是空的,但也充当“启动文件”,类似于 .bashrc 和 .profile,我可以将数据附加到其中

如果由于某种原因您想保留开始时的所有内容,但不想不断修改现有文件,那么您可以创建其他文件,并放入指令.profile.bashrc包含您的文件。在 和 中.profile.bashrc您可以使用命令.(昵称“dot”)后跟文件名来从该文件中读取指令。例如,如果您想将所有自定义内容放在名为 的目录中,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
    

没有额外的空行。

您选择在那里放置一个空行。它不会伤害任何东西。绝对没有理由不放置空行。但如果您不想要空行,这是您的选择。不要把它放在那里。

相关内容