这篇文章是因为这样的问题而来的:
本地从源装了php,命令可以直接使用
which php
$ /usr/local/bin/php
服务器是指定目录编译后使用
alias
引入的
which php
$ alias php='/opt/php56/bin/php'
可以看出,是因为php没有放入命令目录导致的,要达到效果需要了解bash
的四种模式.
bash的四种模式及环境变量的加载
1. interactive-login shell 交互式登录shell
- /etc/profile 加载系统配置
- ~/.bash_profile ~/.bash_login ~/.profile 按顺序查找这三个个人配置文件,如果执行成功其中一个则返回(三个中只会有一个被执行)
2. non_interactive-login shell 非交互式登录shell
- 同 1
3. interactive-non_login shell 交互式非登录shell
- /etc/bash.bashrc
- ~/.bashrc
2. non_interactive-login shell 非交互式登录shell
- export BASH_ENV=~/.bashrc #找到bashrc则加载
从以上四种状态可以看出,我们需要的是 3 这种方式, 通过 man bash
可以找到 -i
参数可实现.
#!/bin/bash -i
php -v