通过 shell 脚本设定临时 alias

100
TaoAlpha
2015-06-051213 words4 minutes to read

缘起

对于习惯在命令行下工作的人, 设定方便好用的aliases是必备工作之一. Github上就有很多人分享自己设定的aliases,这里就不多说设定aliases的事情了.

由于最近修改blog, 需要经常在各个路径下跳转, 每次cd的痛不欲生… 于是就捣鼓了下临时alias的问题.

如何设置临时aliases

首先, 这里的临时的意思是指在当前session内生效的意思. 也就是说我关了当前的terminal或者iterm的tab, 新开一个这些aliases就不会继续生效了. 其生命周期只存在于当前session内. 这样就不会污染了. 方法有两种, 分别介绍如下:

利用alias命令

linux 或者 mac os本身都是自带有alias命令的, 支持你在命令中设定临时别名.

1
alias blog='cd ~/github/blog'

如此设定的aliases就是临时别名, 只在当前session内有效. 但是如果你要设定的别名比较多, 或者说你需要在一段时间内都用的话, 这样每次输入就不方便了.

写shell脚本

所有直接在命令行里执行的命令都可以写在.sh文件里, 然后通过相应的命令来执行. 比如 alias:

1
2
3
4
# temp_alias.sh
alias blog='cd ~/github/blog'
alias css='cd ~/github/blog/_assets/stylesheets'
alias js='cd ~/github/blog/_assets/javascripts'

如此写好这个temp_alias.sh文件后, 我们就可以执行了.

通常来说, shell脚本的执行都是通过sh path_to_shell/xxx.sh来执行的; 但是, 对于alias而言, 因为我们是设定的是临时的别名, 而每次sh命令的执行都是新开一个session执行对应的命令, 这样的话, 我们的alias都是在那个隐藏的看不见的新开的session中生效, 而不会在当前session中生效, 这样就无法达到我们的目的了. 那么怎么做呢?

如果使用zsh或者类似的bash替换程序的人, 看过其.zshrc就应该很熟悉source这么一个命令了. source的含义就是在当前bash环境下读取并执行文件中的命令.

1
2
3
4
5
6
7
8
9
# temp_alias.sh
alias blog='cd ~/github/blog'

# command
source temp_alias.sh

# 通常source和.是等价的, 所以上述命令也可以写为:
# .
. ./temp_alias.sh

Reference

恩~ shell其实真的有很多东西值得研究的~ 哈哈