我知道原则上,一个人不应该改变.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
没有额外的空行。
您选择在那里放置一个空行。它不会伤害任何东西。绝对没有理由不放置空行。但如果您不想要空行,这是您的选择。不要把它放在那里。