分类目录归档:mac

mac lion下安装nginx

os x 虽然也算是unix族 但最近使用下来感觉还是和linux有很大差异性的(useradd)

搭建环境实在是折腾了一番,遂记录下来。

本机环境 os x 10.8.3

Nginx

声明:linux下安装nginx需要pcre pcre-devel zlib zlib-devel openssl openssl-devel  

其实在mac下根本不需要这么麻烦 只要安装一个pcre即可 我在编译zlib的过程中就出了好多问题。

步骤:

brew install pcre

brew install nginx

都可以去官网down下源码编译安装  

启动nginx     ./nginx 

注意:若nginx的监听端口为1024以下,则需要使用sudo nginx ,否则会出现Permission denied.(nginx默认端口为8080 )

PHP

os x 自带php  php -v查看版本

mbp:nginx haidx$ php -v
PHP 5.3.15 with Suhosin-Patch (cli) (built: Aug 28 2012 18:19:13)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies

mbp:nginx haidx$ whereis php
/usr/bin/php

在/usr/bin下  版本太低 自我感觉不太良好 升级之

mbp:nginx haidx$ brew serach php
Error: Unknown command: serach
mbp:nginx haidx$ brew search php
No formula found for “php”. Searching open pull requests…

发现找不到php…   感觉不太科学… google之

发现个新玩意叫 brew tap

what is brew tap?看下面-.-

============>>>>

The main new feature in Homebrew-0.9 is brew tap.

brew-tap allows you to import formula from other repositories into your Homebrew instance. For example:

 <<<=============

安装方法:

Tap the homebrew/dupes repository into your brew installation:

Tap the repository into your brew installation:

Note: For a list of available configuration options run:

Then install php53, php54, or any formulae you might need:

That’s it!

 好了

mbp:nginx haidx$ brew install –without-apache –with-fpm –with-mysql php54
==> Installing php54 dependency: freetype
==> Downloading https://downloads.sf.net/project/machomebrew/Bottles/freetype-2.4.11.mountain_lion.bottle.tar.gz

curl: (56) Recv failure: Connection reset by peer
Warning: Bottle installation failed: building from source.
==> Downloading http://downloads.sf.net/project/freetype/freetype2/2.4.11/freetype-2.4.11.tar.gz

curl: (56) Recv failure: Connection reset by peer
Error: Download failed: http://downloads.sf.net/project/freetype/freetype2/2.4.11/freetype-2.4.11.tar.gz

感谢ccav…感谢天朝… 感谢GFW… sf是被墙的货….幸好有神器。。

echo “–proxy 127.0.0.1:8087″  >> ~/.curlrc

执行这条命令就可以了  让curl走神器通道~

未完待续。。。

 

https://github.com/josegonzalez/homebrew-php

工欲善其器 必先利其器–mac os x

购买rbmp也有一段时间了,一直没怎么用 ,最近向公司请了几天假,正好有点闲余时间,那么就好好的折腾一下mac os x 把。

环境:mac os x 10.8.3

1 编译工具

mac默认是没有gcc make等编译工具的 

xcode挤集成了这些工具包:

打开xcode  点击顶部的导航栏xcode->preference

在弹出的面板中Downloads 下面的components下有个Command Line Tools 点击安装即可

安装完之后就可以在terminal里用gcc了

2 Git

第一步安装了Command Line Tools之后 os x 自动给你安装了git 不过该git版本比较低(git  –version)

由于本人有强烈的升级控欲望 遂安装了最新版 可以命令

brew install git 

3 Brew

一个软件包管理工具 类似ubuntu下的apt-get  fedora下的yum

安装方法超级简单

http://mxcl.github.io/homebrew/index_zh-cn.html

 

5 iTerm2

替代自带terminal的不二选择

macvim        

ssh

[非]交互式[非]登陆shell

问题:切换到root之后 alias不起效果

登陆shell和非登陆shell

登录shell:

  • 用户登陆时,输入用户名和密码后启动的shell;
  • 通过带–login参数的命令:bash –login而启动的shell。对于用户来说,登陆shell和非登陆shell的主要区别是:启动shell时所执行的startup文件不同。我在/etc/profile、~/.bash_profile、~/.bashrc三个文件中分别通过echo命令打印出文件名。

非登录shell:
当然就不需要输入用户名和密码即可打开的Shell,例如:直接命令“bash”就是打开一个新的非登录shell,在Gnome或KDE中打开一个“终端”(terminal)窗口程序也是一个非登录shell。

Mac OS X的终端窗口是个例外。每个终端窗口在打开的时候都会执行登录shell即.bash_profile代替了.bashrc

执行exit命令,退出一个shell(登录或非登录shell)。

执行logout命令,退出登录shell(不能退出非登录shell)。

对于Bash来说,登录shell(包括交互式登录shell和使用“–login”选项的非交互shell),它会首先读取和执行/etc/profile全局配置文件中的命令,然后依次查找~/.bash_profile、~/.bash_login 和 ~/.profile这三个配置文件,读取和执行这三个中的第一个存在且可读的文件中命令。除非被“–noprofile”选项禁止了。

而bash作为非登陆shell启动时读取~/.bashrc。注意,作为登陆shell时bash并不读取~/.bashrc,但是在文件~/.bash_profile中通常都有如下语句来读取~/.bashrc:

if [ –f ~/.bashrc ]; then . ~/.bashrc; fi

交互式shell和非交互式shell(interactive shell and non-interactive shell)

交互式模式就是在终端上执行,shell等待你的输入,并且立即执行你提交的命令。这种模式被称作交互式是因为shell与用户进行交互。这种模式也是大多数用户非常熟悉的:登录、执行一些命令、退出。当你退出后,shell也终止了。

shell也可以运行在另外一种模式:非交互式模式,以shell script(非交互)方式执行。在这种模式 下,shell不与你进行交互,而是读取存放在文件中的命令,并且执行它们。当它读到文件的结尾EOF,shell也就终止了。 可以通过打印“$-”变量的值(代表着当前shell的选项标志),查看其中的“i”选项(表示interactive shell)来区分交互式与非交互式shell。

mbp:~ haidx$ ./test.sh hB
mbp:~ haidx$ echo $- himBH

bash与sh

centos6.2

[root@xnxy ~]# ll `which sh`
lrwxrwxrwx 1 root root 4 Apr 8 13:18 /bin/sh -> bash

可以这样理解, “sh”并不是一个程序,而是一种标准(POSIX), 这种标准,在一定程度上保证了脚本的跨系统性(跨UNIX系统)

调用相关:
在脚本的调用方面(interactive、login相关),bash与sh也是存在差异 以下是详细说明(假如被调用执行的脚本名字叫xxx.sh)
BASH:

1、 交互式的登录shell (bash –il xxx.sh)
载入的信息:
/etc/profile
~/.bash_profile( -> ~/.bashrc -> /etc/bashrc)
~/.bash_login
~/.profile

2、非交互式的登录shell (bash –l xxx.sh)
载入的信息:
/etc/profile
~/.bash_profile ( -> ~/.bashrc -> /etc/bashrc)
~/.bash_login
~/.profile
$BASH_ENV

3、交互式的非登录shell (bash –i xxx.sh)
载入的信息:
~/.bashrc ( -> /etc/bashrc)

4、非交互式的非登录shell (bash xxx.sh)
载入的信息:
$BASH_ENV

SH:

1、交互式的登录shell
载入的信息:
/etc/profile
~/.profile

2、非交互式的登录shell
载入的信息:
/etc/profile
~/.profile

3、交互式的非登录shell
载入的信息:
$ENV

4、非交互式的非登录shell
载入的信息:
nothing

参考文献

chsh -s /bin/bash