Linux 小记—Ubuntu 初始配置

前言

工欲善其事,必先利其器。经过多次的重复配置 ubuntu 开发坏境,我终于决定花点时间总结一下,并将其写成一个自动化配置脚本。服务器实例:ubuntu 16.04,技术栈:shell,python。

1. 主机名

可以通过 修改主机名,不过最好是写入 /etc/hostname 文件,重启生效。为了让同一内网段的主机可以通过主机名访问,应在 /etc/hosts 中添加私有ip的解析。

2. 命令提示符

与命令提示符相关的环境变量是 PS1,初始值为:,各字符解释如下:

对于我来说我只需要 \u、\h、\W(\w 如果多进几个目录敲命令的体验就很差了),为了让命令行一目了然,最好给命令提示符加个颜色 ,颜色代码解释如下:

3. GNU Readline Library

Readline 的解释:从终端获取用户输入的字符流,辩认其中一些特定的字符序列,然后执行这些序列对应的函数或者宏。通俗一点讲就是绑定热键,比如在 bash 中默认按下 执行的是光标回到行首的命令。

此处我需要优化的是:1、 补全时忽略大小写;2、通过 查询已输入关键字的历史记录。

4. 历史记录

我需要:1、忽略重复的历史命令;2、保存更多的历史记录;3、忽略特定的历史记录;4、新建的终端同步 history。

5. Git 配置

想要流畅地使用 git,我认为有几点必须配置:

5.1 在命令提示符上显示 git 基本信息

安装完 git 之后,在 目录中会生成一个 文件:

打开,注释里面写了完整的操作步骤:

接下来还需赋值几个 git 环境变量让提示符显示更多 git 状态:

显示效果:

5.2 多账号配置

我有两个 git 账号,分别是 gitee 和 github,且分别拥有各自的 name、email 和 ssh-key,我需要:

Ⅰ、两个账号都可以使用各自的密钥对免密码访问

生成密钥对:

编辑

联通测试:

Ⅱ、 到达各自的仓库时自动切换用户名和邮箱

为了保证各仓库能够以正确的用户信息提交版本,需要取消全局的用户设置(我不理解为什么 global 中的用户信息要去覆盖各仓库的,反过来不是更好吗)。

实现自动切换能想到的方案有很多,我更倾向于去修改 ,在 函数末尾处增加一段逻辑:

顺带多提一下,git 默认忽略文件大小写,然而作为轻微的强迫症患者,我一定要和远程仓库保持完全一致:。

6. 密钥对管理

我可能会一次性创建n台云服务器组成一个个集群,每个集群中有一个 leader 和 n 个 follower,follower 只是提供计算能力,它应该把自己全权交给 leader,那么在 leader 上必须能够访问所有的

follower。这时候统一密钥对管理就非常有必要了,只需要一个私钥就可以访问所有的服务器,其实上一节提到的 git 密钥对也可以一起管理。本节展开的话其实就是一些脚本实现,所以统一交给下一节归纳。

7. 自动配置脚本编写

现在我需要思考的是如何使用一行命令来自动完成以上所有的配置。由于配置中涉及到一些私钥等铭感信息,所以脚本必须放置于 git 私有库中,但是 ubuntu 初始化的时候并没有安装 git,所以还需要一个公有库来放置初始脚本,职能是安装 git 和访问私有库。最终我需要实现执行以下一行代码就完成整个 ubuntu 环境的配置:

初始的入口脚本比较简单(安装 git,下载私有库并执行 python 脚本):

以下是 python 部分的结构:

代码比较简单,都是一些读写文件和结合系统命令的操作(步骤和说明都写在注释中了,不再赘述)。

(一些可以公用的函数单独抽离出来):

结语

终于剔除了一块疙瘩,以后一拿到服务器就可以愉快地玩耍了。当然,以上脚本只适合我个人的使用习惯,部分代码逻辑比较粗暴,各位看官参考就好,切勿直接使用。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180501G1F8FY00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券