0 bash login profile dot-files
我知道原则上,一个人不应该改变,.bashrc而alias应该更好地完成诸如创建之类的常见更改.profile。
当我租用一个以 Bash 作为主 shell的新IaaS系统时,我采取的第一步是(扩展版本):
cat <<-EOF >> "$HOME"/.profile
set -x && complete -r
EOF
source "$HOME"/.profile
Run Code Online (Sandbox Code Playgroud)
“例程”到“子例程”内容之间的额外空行是因为.profile 已经包含了一些数据,我想将我追加的新数据(可能不止一行set -x && complete -r)与其他已经存在的数据分开- 现有数据。
我需要另一个文件,一个来空的,但还充当类似于一个“引导文件” .bashrc,并.profile到我可以追加数据,而无需额外的空行。在 Ubuntu 16.04 (xenial) 中快速查看我的用户目录显示没有这样的文件。
在另一个目录中是否有我想要的文件,还是我应该自己创建一个?如果是这样,请只提示应该如何做
我知道原则上,不应该更改 .bashrc,而像创建别名这样的常见更改最好在 .profile 中完成。
这没有任何意义。您可能误解了您阅读的内容。你没有理由不改变.bashrc。相反,这是您的自定义文件。它就在那里,这样你就可以把你想要的任何东西放进去。您不必保留一开始的任何内容,您可以添加您想要的内容。
.profile和.bashrc都是您的自定义文件,但它们的作用不同。.profile用于登录时的东西,如环境变量。.bashrc用于外壳配置,如别名和完成设置。
set -x仅用于调试。complete -x是 shell 自定义,而不是登录时间设置,因此它进入.bashrc.
我需要另一个文件,它是空的,但也充当“引导文件”,类似于 .bashrc 和 .profile,我可以将数据附加到其中
如果出于某种原因您想保留开始时的任何内容但不想不断修改现有文件,那么您可以创建其他文件,并在其中放入指令.profile并.bashrc包含您的文件。在.profile和 中.bashrc,您都可以使用.后跟文件名的命令(昵称“点”)从该文件中读取指令。例如,如果您想将所有自定义项放在名为的目录中etc以便您可以快速部署它,那么您可以执行以下操作:
~/etc/profile.~/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
Run Code Online (Sandbox Code Playgroud)没有额外的空行。
你选择在那里放一个空行。它不会伤害任何东西。绝对没有理由不放空行。但是,如果您不想要空行,这是您的选择。不要把它放在那里。