linux的bashrc脚本编写
最近整理以前的笔记时候,翻到这点记录,里面的内容是实习时师父教我的,可以说都是师父的干货,分享一点点。
linux的profile和bashrc文件通常被用来配置用户自己的个性化设置或者开发环境。
login shell代表用户登入, 比如使用 “su -“ 命令, 或者用 ssh 连接到某一个服务器上, 都会使用该用户默认 shell 启动 login shell 模式。该模式下的 shell 会去自动执行 /etc/profile 和 ~/.profile 文件, 但不会执行任何的bashrc 文件, 所以一般在/etc/profile 或者 ~/.profile 里我们需要手动去 source bashrc 文件.
而 no-login shell 的情况是我们在终端下直接输入 bash 或者 bash -c “CMD” 来启动的 shell。该模式下是不会自动去运行任何的 profile 文件。
而为了方便开发,配置自己的开发环境很重要,而师父当时教的就是如何实现自己的bashrc脚本,主要是为了启动终端时,便可以加载自己创建的版本的docker。
具体做法:将自己的环境配置,指令等单独写一个文件: .bash_name,这个文件要放在$HOME目录中,然后在$HOME/.bashrc中引用这个文件。
在$HOME/.bashrc中加入如下
if [ -f "$HOME/.bash_name" ]; then
. "$HOME/.bash_name"
fi
以下是具体的bashrc文件中的内容(主要是关于启动docker的,这里的docker镜像是基于自己的开发环境创建的)
function docker_open(){
#$1:docker image
docker run --rm --name=mania -it --net=host --privileged -v $HOME:$HOME -w $HOME $1 bash
}
function docker_open_normal(){
docker run --rm --name=$2 -it --net=host --privileged -v $HOME:$HOME -w $HOME $1 sh -c "useradd $2 -u $(id -u $2) -m -s /bin/bash 2>/dev/null && echo $2:XXXX | chpasswd && chmod +x /etc/sudoers && echo '$2 ALL=(ALL:ALL) ALL' >> /etc/sudoers && chmod -x /etc/sudoers && hostname docker && su $2 && bash"
}
function docker_open_fast(){
user=$(id -n -u)
echo $user
docker rm -f $user
docker_open_normal ubuntu:develop $user
}
docker run -t -i -v $HOME ubuntu:develop /bin/bash
ssh -i ~/.ssh/XXXX_ssh root@IP -p 2222
ssh -p 2222 root@IP 'mkdir -p .ssh && chmod 700 .ssh/authorized_keys && chmod 700 .ssh && chmod 700 /root && cat >> .ssh/authorized_keys' < ~/.ssh/XXXX_ssh.pub
关于生成密钥对(公钥和私钥,这里私钥用户加密,公钥用于解密):
在linux上执行ssh-keygen,会生成基于rsa算法的密钥对。 执行这个命令后,
第一步会让你输入密钥文件名,默认为id_rsa(并且默认放在$HOME/.ssh/文件下),我们这里输入./..ssh/XXX_ssh,表示将在$HOME/.ssh/文件下生成XXX_ssh密钥文件。
当然你也可以直接一行指令启动:docker run -t -i -v $HOME:$HOME -w $HOME ubuntu:develop /bin/bash
但如果考虑敏捷开发,写自己的bashrc脚本是很有实用意义的,以上只是一些皮毛,当时只记下这么多,可以去师父的博客中,看完整的脚本。