iOS上的jQuery.on()冒泡事件绑定 以及 iOS绝对定位元素中的输入框

iOS的冒泡,如果一直没有handler来处理事件,则只会冒泡到body的内层,而不会冒泡到body上。因此,加了个children()可以解决:

$("body").children().on("click",".contentup",Reply.replyOneHandler);

如果是zepto.js

$(document).children().on("click",".contentup",Reply.replyOneHandler);

绝对定位(或者fixed 的元素)的元素中,如果有输入框,input或者textarea,获取焦点,自动弹出输入法之后,绝对定位的元素会在屏幕最上方到输入法最上边框的中间位置。

$(“.test”).scrollTop(0);可以解决

Linux查看系统配置常用命令

 

# uname -a # 查看内核/操作系统/CPU信息
# head -n 1 /etc/issue # 查看操作系统版本
# cat /proc/cpuinfo # 查看CPU信息
# hostname # 查看计算机名
# lspci -tv # 列出所有PCI设备
# lsusb -tv # 列出所有USB设备
# lsmod # 列出加载的内核模块
# env # 查看环境变量 资源
# free -m # 查看内存使用量和交换区使用量
# df -h # 查看各分区使用情况
# du -sh # 查看指定目录的大小
# grep MemTotal /proc/meminfo # 查看内存总量
# grep MemFree /proc/meminfo # 查看空闲内存量
# uptime # 查看系统运行时间、用户数、负载
# cat /proc/loadavg # 查看系统负载 磁盘和分区
# mount | column -t # 查看挂接的分区状态
# fdisk -l # 查看所有分区
# swapon -s # 查看所有交换分区
# hdparm -i /dev/hda # 查看磁盘参数(仅适用于IDE设备)
# dmesg | grep IDE # 查看启动时IDE设备检测状况 网络
# ifconfig # 查看所有网络接口的属性
# iptables -L # 查看防火墙设置
# route -n # 查看路由表
# netstat -lntp # 查看所有监听端口
# netstat -antp # 查看所有已经建立的连接
# netstat -s # 查看网络统计信息 进程
# ps -ef # 查看所有进程
# top # 实时显示进程状态 用户
# w # 查看活动用户
# id # 查看指定用户信息
# last # 查看用户登录日志
# cut -d: -f1 /etc/passwd # 查看系统所有用户

# cut -d: -f1 /etc/group # 查看系统所有组
# crontab -l # 查看当前用户的计划任务 服务
# chkconfig –list # 列出所有系统服务
# chkconfig –list | grep on # 列出所有启动的系统服务 程序
# rpm -qa # 查看所有安装的软件包

MySQL字符集和校验规则概念

字符集,character set,就是一套表示字符的符号和这些的符号的底层编码;而校验规则,则是在字符集内用于比较字符的一套规则。下面我简单举个例子来说明一下:如在某个字符集“X”的A与a,他们的底层编码分别是A=0,a=100。这里符号“A”“a”和底层编码“0”“100”就是字符集的概念范围。假设我们要比较A与a的大小,我们得到a>A,因为我们是根据其底层编码进行比较的,这就是这个字符集“X”的一种校验规则“Z”(根据底层编码来比较)。假设,现在有另外一种校验规则,是先取其相反数,然后再比较大小,那么就很显然的得到a<A,这就是字符集“X”的另外一种校验规则“Z1”。由此可见,一种字符集可能存在多个与之对应的校验规则(一对多关系)。

    关于字符集与校验规则,mysql支持:
1、使用字符集来存储字符串,支持多种字符集;
2、使用校验规则来比较字符串,同种字符集还能使用多种校验规则来比较;
3、在同一台服务器、同一个数据库或者甚至在同一个表中使用不同字符集或校对规则来混合组合字符串;
4、可以在任何级别(服务器、数据库、表、字段、字符串),定义不同的字符集和校验规则。

    查询你的mysql数据库所支持的字符集种类,可以如下:
mysql> show character set;
+———-+—————————–+———————+——–+
| Charset  | Description                 | Default collation   | Maxlen |
+———-+—————————–+———————+——–+
| big5     | Big5 Traditional Chinese    | big5_chinese_ci         2 |
| dec8     | DEC West European           | dec8_swedish_ci         1 |
| ………| ………………….      | …………….        . |
| eucjpms  | UJIS for Windows Japanese   | eucjpms_japanese_ci |      3 |
+———-+—————————–+———————+——–+
36 rows in set (0.00 sec)
  这里的maxlen表示要用最大多少个字节来存储字符集的单个词,default collation表示该字符集的默认校验规则。
  你也可以利用like来进行筛选,如下:
mysql> show character set like ‘latin%’;
+———+—————————–+——————-+——–+
| Charset | Description                 | Default collation | Maxlen |
+———+—————————–+——————-+——–+
| latin1  | cp1252 West European        | latin1_swedish_ci |      1 |
| latin2  | ISO 8859-2 Central European | latin2_general_ci |      1 |
| latin5  | ISO 8859-9 Turkish          | latin5_turkish_ci |      1 |
| latin7  | ISO 8859-13 Baltic          | latin7_general_ci |      1 |
+———+—————————–+——————-+——–+
4 rows in set (0.00 sec)
   查询你的mysql数据库所支持字符集的校验规则,可以如下:
mysql> show collation;
+———————-+———-+—–+———+———-+———+
| Collation            | Charset  | Id  | Default | Compiled | Sortlen |
+———————-+———-+—–+———+———-+———+
| big5_chinese_ci      | big5      1 | Yes     | Yes           1 |
| big5_bin             | big5     84 |         | Yes           1 |
| dec8_swedish_ci      | dec8      3 | Yes                  0 |
| ……..             | ….     .. | …     | …           . |
| eucjpms_bin          | eucjpms  98 |         | Yes           1 |
+———————-+———-+—–+———+———-+———+
127 rows in set (0.00 sec)
  这里compiled表示该collation所对应的character set是否被编译到此mysql数据库,通过此点就可以知道该mysql数据库是否支持某个字符集。sortlen表示要在内存中排序时,该字符集的字符要占用多少个字节。
  你也可以利用like来进行筛选,如下:
mysql> show collation like ‘latin1%’;
+——————-+———+—-+———+———-+———+
| Collation         | Charset | Id | Default | Compiled | Sortlen |
+——————-+———+—-+———+———-+———+
| latin1_german1_ci | latin1  5 |         | Yes           1 |
| latin1_swedish_ci | latin1  8 | Yes     | Yes           1 |
| latin1_danish_ci  | latin1  | 15 |         | Yes           1 |
| latin1_german2_ci | latin1  | 31 |         | Yes           2 |
| latin1_bin        | latin1  | 47 |         | Yes           1 |
| latin1_general_ci | latin1  | 48 |         | Yes           1 |
| latin1_general_cs | latin1  | 49 |         | Yes           1 |
| latin1_spanish_ci | latin1  | 94 |         | Yes           1 |
+——————-+———+—-+———+———-+———+
8 rows in set (0.00 sec)

    大家可能已经发现collation的名字似乎有规律可循,其实的确也是这样的,并且它也有些特征,如下:
1、两个不同的字符集不能有相同的校验规则(字符集:校验规则 = 1:n);
2、每个字符集都有一个校验规则,就是对应的DEFAULT=YES的那个collation;
3、collation命名规则:字符集名_对应的语言名_ci/cs/bin,其中ci表示大小写不敏感性,cs表示大小写敏感性,bin表示二进

git reset 用法简介

在git的一般使用中,如果发现错误的将不想staging的文件add进入index之后,想回退取消,则可以使用命令:git reset HEAD <file>…,同时git add完毕之后,git也会做相应的提示,比如:
引用
# Changes to be committed: 
#   (use “git reset HEAD <file>…” to unstage) 
# new file:   Test.scala 
git reset [–hard|soft|mixed|merge|keep] [<commit>或HEAD]:将当前的分支重设(reset)到指定的<commit>或者HEAD(默认,如果不显示指定commit,默认是HEAD,即最新的一次提交),并且根据[mode]有可能更新index和working directory。mode的取值可以是hard、soft、mixed、merged、keep。下面来详细说明每种模式的意义和效果。
A). –hard:重设(reset) index和working directory,自从<commit>以来在working directory中的任何改变都被丢弃,并把HEAD指向<commit>。
具体一个例子,假设有三个commit, git st:
commit3: add test3.c
commit2: add test2.c
commit1: add test1.c
执行git reset –hard HEAD~1后,
显示:HEAD is now at commit2,运行git log
commit2: add test2.c
commit1: add test1.c
运行git st, 没有任何变化
B). –soft:index和working directory中的内容不作任何改变,仅仅把HEAD指向<commit>。这个模式的效果是,执行完毕后,自从<commit>以来的所有改变都会显示在git status的”Changes to be committed”中。
具体一个例子,假设有三个commit, git st:
commit3: add test3.c
commit2: add test2.c
commit1: add test1.c
执行git reset –soft(默认) HEAD~1后,运行git log
commit2: add test2.c
commit1: add test1.c
运行git status, 则test3.c处于暂存区,处于准备提交状态。即此时git commit就会提交它。
  在使用git进行协作开发时,我们经常需要将自己的修改生成patch发给被人,但是在修改代码的过程中我们进行了很多次的提交,如何生成从最初的代码状态到最终代码状态的patch呢?下面要介绍的功能是应对这中情况。
现假设我们git软件仓库中的分支情况如下:
a–>b–>c
也就是说我们的代码从状态a修改到状态b,进行一次提交,然后再修改到状态c,进行一次提交。这时我们已经肯定由a到c的修改是正确的,不再需要状态b了,并且要把从a到c的变化生成一个patch发送给别人。如果直接打包的话会生成两个path,那么如何生成一个patch呢,这时就需要git-reset命令。
首先给状态a创建一个tag,假设名称为A,然后执行
git-reset –soft A
这样我们的软件仓库就变为
a
状态b和状态c都已经被删除了,但是当前的代码并没有被改变,还是状态c的代码,这时我们做一次提交,软件仓库变成下面的样子:
a–>d
状态d和状态c所对应的代码是完全相同的,只是名字不同。现在就可以生成一个patch打包发给别人了
C). –mixed:仅reset index,但是不reset working directory。这个模式是默认模式,即当不显示告知git reset模式时,会使用mixed模式。这个模式的效果是,working directory中文件的修改都会被保留,不会丢弃,但是也不会被标记成”Changes to be committed”,但是会打出什么还未被更新的报告。报告如下:
引用
Unstaged changes after reset:
M Test.Scala
M test.txt
D). –merge和–keep用的不多,在下面的例子中说明。
二、常用示例
下面列出一些git reset的典型的应用场景:
A) 回滚add操纵
引用
$ edit                                     (1)
$ git add frotz.c filfre.c
$ mailx                                    (2)
$ git reset                                (3)
$ git pull git://info.example.com/ nitfol  (4)
(1) 编辑文件frotz.c, filfre.c,做了些更改,并把更改添加到了index
(2) 查看邮件,发现某人要你pull,有一些改变需要你merge下来
(3) 然而,你已经把index搞乱了,因为index同HEAD commit不匹配了,但是你知道,即将pull的东西不会影响已经修改的frotz.c和filfre.c,因此你可以revert这两个文件的改变。revert后,那些改变应该依旧在working directory中,因此执行git reset。
(4) 然后,执行了pull之后,自动merge,frotz.c和filfre.c这些改变依然在working directory中。
B) 回滚最近一次commit
引用
$ git commit …
$ git reset –soft HEAD^      (1)
$ edit                        (2)
$ git commit -a -c ORIG_HEAD  (3)
(1) 当提交了之后,你又发现代码没有提交完整,或者你想重新编辑一下提交的comment,执行git reset –soft HEAD^,让working tree还跟reset之前一样,不作任何改变。
HEAD^指向HEAD之前最近的一次commit。
(2) 对working tree下的文件做修改
(3) 然后使用reset之前那次commit的注释、作者、日期等信息重新提交。注意,当执行git reset命令时,git会把老的HEAD拷贝到文件.git/ORIG_HEAD中,在命令中可以使用ORIG_HEAD引用这个commit。commit 命令中 -a 参数的意思是告诉git,自动把所有修改的和删除的文件都放进stage area,未被git跟踪的新建的文件不受影响。commit命令中-c <commit> 或者 -C <commit>意思是拿已经提交的commit对象中的信息(作者,提交者,注释,时间戳等)提交,那么这条commit命令的意思就非常清晰了,把所有更改的文件加入stage area,并使用上次的提交信息重新提交。
C) 回滚最近几次commit,并把这几次commit放到叫做topic的branch上去。
引用
$ git branch topic/wip     (1)
$ git reset –hard HEAD~3  (2)
$ git checkout topic/wip   (3)
(1) 你已经提交了一些commit,但是此时发现这些commit还不够成熟,不能进入master分支,但你希望在新的branch上润色这些commit改动。因此执行了git branch命令在当前的HEAD上建立了新的叫做 topic/wip的分支。
(2) 然后回滚master branch上的最近三次提交。HEAD~3指向当前HEAD-3个commit的commit,git reset –hard HEAD~3即删除最近的三个commit(删除HEAD, HEAD^, HEAD~2),将HEAD指向HEAD~3。
D) 永久删除最后几个commit
引用
$ git commit …
$ git reset –hard HEAD~3   (1)
(1) 最后三个commit(即HEAD, HEAD^和HEAD~2)提交有问题,你想永久删除这三个commit。
E) 回滚merge和pull操作
引用
$ git pull                         (1)
Auto-merging nitfol
CONFLICT (content): Merge conflict in nitfol
Automatic merge failed; fix conflicts and then commit the result.
$ git reset –hard                 (2)
$ git pull . topic/branch          (3)
Updating from 41223… to 13134…
Fast-forward
$ git reset –hard ORIG_HEAD       (4)
(1) 从origin拉下来一些更新,但是产生了很多冲突,你暂时没有这么多时间去解决这些冲突,因此你决定稍候有空的时候再重新pull。
(2) 由于pull操作产生了冲突,因此所有pull下来的改变尚未提交,仍然再stage area中,这种情况下git reset –hard 与 git reset –hard HEAD意思相同,即都是清除index和working tree中被搞乱的东西。
(3) 将topic/branch合并到当前的branch,这次没有产生冲突,并且合并后的更改自动提交。
(4) 但是此时你又发现将topic/branch合并过来为时尚早,因此决定退滚merge,执行git reset –hard ORIG_HEAD回滚刚才的pull/merge操作。说明:前面讲过,执行git reset时,git会把reset之前的HEAD放入.git/ORIG_HEAD文件中,命令行中使用ORIG_HEAD引用这个commit。同样的,执行pull和merge操作时,git都会把执行操作前的HEAD放入ORIG_HEAD中,以防回滚操作。
F) 在被污染的working tree中回滚merge或者pull
引用
$ git pull                         (1)
Auto-merging nitfol
Merge made by recursive.
nitfol                |   20 +++++—-
$ git reset –merge ORIG_HEAD      (2)
(1) 即便你已经在本地更改了一些你的working tree,你也可安全的git pull,前提是你知道将要pull的内容不会覆盖你的working tree中的内容。
(2) git pull完后,你发现这次pull下来的修改不满意,想要回滚到pull之前的状态,从前面的介绍知道,我们可以执行git reset –hard ORIG_HEAD,但是这个命令有个副作用就是清空你的working tree,即丢弃你的本地未add的那些改变。为了避免丢弃working tree中的内容,可以使用git reset –merge ORIG_HEAD,注意其中的–hard 换成了 –merge,这样就可以避免在回滚时清除working tree。
G) 被中断的工作流程
在实际开发中经常出现这样的情形:你正在开发一个大的feature,此时来了一个紧急的bug需要修复,但是目前在working tree中的内容还没有成型,还不足以commit,但是你又必须切换的另外的branch去fix bug。请看下面的例子
引用
$ git checkout feature ;# you were working in “feature” branch and
$ work work work       ;# got interrupted
$ git commit -a -m “snapshot WIP”                 (1)
$ git checkout master
$ fix fix fix
$ git commit ;# commit with real log
$ git checkout feature
$ git reset –soft HEAD^ ;# go back to WIP state  (2)
$ git reset                                       (3)
(1) 这次属于临时提交,因此随便添加一个临时注释即可。
(2) 这次reset删除了WIP commit,并且把working tree设置成提交WIP快照之前的状态。
(3) 此时,在index中依然遗留着“snapshot WIP”提交时所做的uncommit changes,git reset将会清理index成为尚未提交”snapshot WIP”时的状态便于接下来继续工作。
(H) Reset单独的一个文件
假设你已经添加了一个文件进入index,但是而后又不打算把这个文件提交,此时可以使用git reset把这个文件从index中去除。
引用
$ git reset — frotz.c                      (1)
$ git commit -m “Commit files in index”     (2)
$ git add frotz.c                           (3)
(1) 把文件frotz.c从index中去除,
(2) 把index中的文件提交
(3) 再次把frotz.c加入index
(I) 保留working tree并丢弃一些之前的commit
假设你正在编辑一些文件,并且已经提交,接着继续工作,但是现在你发现当前在working tree中的内容应该属于另一个branch,与这之前的commit没有什么关系。此时,你可以开启一个新的branch,并且保留着working tree中的内容。
引用
$ git tag start
$ git checkout -b branch1
$ edit
$ git commit …                            (1)
$ edit
$ git checkout -b branch2                   (2)
$ git reset –keep start                    (3)
(1) 这次是把在branch1中的改变提交了。
(2) 此时发现,之前的提交不属于这个branch,此时你新建了branch2,并切换到了branch2上。
(3) 此时你可以用reset –keep把在start之后的commit清除掉,但是保持working tree不变。

 

shell 脚本学习笔记

一、变量
1.不通变量   test = ‘xiaofang’
2.特殊变量
$0  :  当前脚本的文件名
$n  :   传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2
$#  :   传递给脚本或函数的参数个数
$*   :   传递给脚本或函数的所有参数。
$@  :   传递给脚本或函数的所有参数。被双引号(” “)包含时,与 $* 稍有不同
$?  :   上个命令的退出状态,或函数的返回值
$$  :   当前Shell进程ID
tips:  $* 和 $@ 都表示传递给函数或脚本的所有参数,不被双引号(” “)包含时,都以”$1” “$2” … “$n” 的形式输出所有参数。

但是当它们被双引号(” “)包含时,”$*” 会将所有的参数作为一个整体,以”$1 $2 … $n”的形式输出所有参数;”$@” 会将各个参数分开,以”$1″ “$2” … “$n” 的形式输出所有参数。
二、shell 替换
1.echo  -e  ‘xiaofang  \n’  ;   让转移符生效-E 选项禁止转义;-n 选项可以禁止插入换行符。
2. date = `date`     echo $date                 ;把命令结果用变量保存起来

3.${var} :  变量原来的值
${var:-word}    如果变量 var 为空或已被删除(unset),那么返回 word,但不改变 var 的值。
${var:=word}    如果变量 var 为空或已被删除(unset),那么返回 word,并将 var 的值设置为 word。
${var:?message}   如果变量 var 为空或已被删除(unset),那么将消息 message 送到标准错误输出,可以用来检测变量 var                                    是否可以被正常赋值。
若此替换出现在Shell脚本中,那么脚本将停止运行。
${var:+word}       如果变量 var 被定义,那么返回 word,但不改变 var 的值。
4.unset 删除变量
三、shell 运算符
1.expr 是一款表达式计算工具,使用它能完成表达式的求值操作
2.  var =`expr 2 + 2`
两点注意:
||.表达式和运算符之间要有空格,例如 2+2 是不对的,必须写成 2 + 2,这与我们熟悉的大多数编程语言不一样。
||.完整的表达式要被 ` ` 包含,注意这个字符不是常用的单引号,在 Esc 键下边。
||.乘号(*)前边必须加反斜杠(\)才能实现乘法运算
||. 字符串比较用  =
四、字符串
1.echo ${#string}   字符串长度
2.echo ${string:1:4}   提取字符串
3.echo `expr index “$string” is`          查找字符创
五、数组
1.array_name=(value0 value1 value2 value3)    定义数组
array_name[0]=value0
2.
valuen=${array_name[2]}       读取数组
3.
${array_name[*]}和${array_name[@]}  代表所有元素
六、循环
1.if … fi 语句;    [ $a  ==  $b  ]  []  之间必须有空格,否则会有语法错误。
2.if test $[num1] -eq $[num2]
 then
echo ‘The two numbers are equal!’
 else
          echo ‘The two numbers are not equal!’
 fi
test 命令用于检查某个条件是否成立,与方括号([ ])类似。
3.
tips:  read input      ;读取用户输入的,保存在$input 变量中
七、函数
1.删除变量  unset  var_name
   删除函数   unset .f function_name   要加  .f

 

mac 显示隐藏文件

开启显示隐藏文件:

defaults write com.apple.finder
AppleShowAllFiles -bool TRUE

关闭显示隐藏文件:

defaults write com.apple.finder AppleShowAllFiles
-bool FALSE

以上代码在终端内执行后还需要重新启动Finder才能真正生效。重启Finder的方法很多:

1)按住option+command,然后在dock上面点右键,弹出来的菜单中选择“Relanch”或“重新开启”即可。

2)点击左上角的“苹果菜单”,选择弹出的菜单中的“Force Quit”,在弹出的对话框中选择重启Finder即可。

备注:

可以书写一个脚本放到 $PATH 的目录里面
脚本如下 showfile.sh
#! /bin/bash
defaults write com.apple.finder AppleShowAllFiles -bool $1
killall Finder

然后命令行就可以知心  $  showfile.sh  true  或者 showfile.sh flase

sphinx 学习,遇到的一些问题

我用的mac ,下面遇到的问题是mac上的我遇到的一些问题;
一、sphinx
1.用brew安装sphinx  ,启动sphinx 的时候提示,没有找到mysq服务,“source ‘src1’: unknown type ‘mysql’; skipping.
”,卸载sphinx ,用brew install sphinx –with-mysql重新安装;
2.如果“failed to lock pid file ‘/usr/local/sphinx/var/log/searchd.pid’” 这个错误,停止searchd ,重新启动一下

备注:相关命令
1.生成索引文件 /usr/local/sphinx/bin/indexer –config /usr/local/sphinx/etc/sphinx.conf –all
2.启动sphinx搜索服务 usr/local/sphinx/bin/searchd –config /usr/local/sphinx/etc/sphinx.conf
3.停止searchd服务 searchd –config /home/myuser/sphinx.conf –stop
4.通过mysql41协议访问  mysql -h0 -P9306

二、coreseek的一些问题
1.安装http://www.coreseek.cn/products-install/install_on_bsd_linux/  有详细教程和错误解决方案
2.不用安装php sphinx扩展,就用源码里面自带的 sphinxapi.php(testpack/apil里面),如果安装了,会出现本地客户端版本过高,服务端版本过低的问题
3.可以连接api查看索引数据,操作方式和mysql的操作方式差不多,mysql -h0 -P9306 (searchd 里面配置的端口号)

linux添加环境变量的方法总结

linux添加环境变量的方法总结
linux对环境变量有无双引号、或者变量用不用{}括起来并不敏感,小小的看了下profile文件,似乎系统如果发现变量没有引号,会自动加上。
但变量前必须加$符号,类似于perl
  www.2cto.com
三种添加环境变量的方法,在fedora使用jena时都试过了:
1、直接使用export命令:
比如:
export PATH=$PATH:/home/lm/apache-jena-2.7.4/bin
export CLASSPATH=.:/home/liaomeng/apache-jena-2.7.4/lib
命令export可以查看各个系统变量和路径,发现系统变量中PATH中多了设置的路径,增加了CLASSPATH变量,则设置成功
也可单个变量输出查看:
echo $CLASSPATH
echo $PATH
2. 修改/etc/profile文件
在/etc/profile文件末尾添加:
export JENAROOT=/home/liaomeng/apache-jena-2.7.4
export PATH=$JENAROOT/bin:$PATH             ##在已有的PATH变量前面添加jena路径,其中的冒号为分隔符
export CLASSPATH=.:$JENAROOT/lib/jena-core-2.7.4.jar        ##使用*.jar好像不好使,试了很多次,如果有多个jar包需要添加,也用冒号分隔
  www.2cto.com
source /etc/profile使修改生效,不必重启系统
有人说也可以在/etc/profile.d/文件夹中添加个sh文件,/etc/profile文件似乎会自动读取/etc/profile.d/文件夹中的各个脚本文件,我还没试过。
另外需要注意:
CLASSPATH中当前目录“.”不能丢,把当前目录丢掉也是常见的致命错误。
在设置环境变量时特别要注意不能把原来的值给覆盖掉了,这是一种常见的错误。
软件越装越多,环境变量越添越多,为了避免造成混乱,所以建议所有语句都添加在文件结尾,按软件的安装顺序添加。
3. 修改主目录下的隐藏文件./bashrc
修改方式与修改/etc/profile文件相同
source .bashrc使修改生效