近期应实验室的要求开始学习Unix相关的一些东西,第一阶段当然是shell脚本了,看到$PS1变量的时候突然想起之前一直没有解决的一个问题。
电脑是老爸帮买的,他拿到的第一件事就是注册开机了,当然对于他来说用我的名字全拼当然是最合适不过的电脑命名方式了。可是对于我这种”高逼格”的青年来说,我肯定要用英文名啊,于是开始改名,之前一直未能解决这个问题,不懂Unix系统最后也就放弃了。
直到今天学习的时候echo 了下 PS1 这个变量,输出结果如下:
“\h\W \u\$ “
这个字串表示mac终端在等待用户输入时显示的前缀,\h主机名,\W当前的工作目录,\u用户名,\$美元符号。所以说按照网上的教程,要修改最前面的名字只需要在共享里面修改主机名就行了啊。
但是修改名字重启终端后主机名仍然没有发生变化,这就蛋疼了,完全不知道问题出在哪里。
感觉会不会是终端引用了某个shell变量,设置中修改后hostname没有及时跟新到变量里导致的?于是set了一下。打出所有变量发现了一个叫HOSTNAME的变量,果然如此,次变量生成了个局域网的主机名,格式如下:
HOSTNAME.Bitman’s\032Private\032Network
我的中二名字就用HOSTNAME代替了,Bitman是工作室的路由器名字,之后的两串我也不太明白。可以发现,只是在共享中修改名字后,此变量是并没有被及时跟新的,导致了此问题,所以网上才会出现有人跟新成功有人没有。
解决方案是,设置好主机名后断开网络重新连接,打开网络时系统会重新跟新该变量,hostname也就可以读取到最新的设置了。为什么非要从这样一个存在缓存问题的变量中来获取主机名呢?希望apple在之后可以解决这个问题,不然出这个问题真的很没有头绪。