工作相关,Mac下使用命令行工具iTerm经常会手打一些常用命令, 今天突发奇想,如果我能把常见命令保存为一个单词,以后直接输入此单词就能代替这个命令该多好啊。
网上查询了下,我的想法可行, Mac本质是Unix系统,所以很多地方跟Linux一样,文件系统中有几个特殊文件:

/etc/profile,/etc/bashrc 是系统全局环境变量设定
~/.profile,~/.bashrc用户家目录下的私有环境变量设定

今天以node的http-server(三方模块)命令举例:

1
sudo vi ~/.bashrc

加入如下代码:

1
alias server='sudo http-server -p 80 ./'

保存并退出,执行

1
source ~/.bashrc

这样就可以直接在命令行打server来代替sudo http-server -p 80 ./了。
然后事情并没有那么顺利……

当退出命令行工具或者重启系统后,之前的设置就不生效了,查找了好久,才知道,MacOS中默认并没有~/.bashrc文件,它只认~/.bash_profile 文件,就是说系统唤起或者命令行工具开启后,自动加载的是~/.bash_profile,所以一般Mac下配置环境变量的教程都是修改~/.bash_profile文件。

所以解决办法大家差不多知道了:
把刚刚编辑的那行加入到~/.bash_profile中,再执行source启用;

或者仍然保留~/.bashrc文件,然后在~/.bash_profile中加入如下代码:

1
2
3
if [ -f ~/.bashrc ]; then
source ~/.bashrc
fi

意思即判断到有~/.bashrc文件的话, 就source启用它。