天天看点

在Cygwin下移植已编译的NS2的方法 —— 修改Cygwin的默认启动路径

2011-03-03 wcdj

问题背景:

同学Deng的ns2出现了问题,想使用同学Yang的已安装好的ns2。因此,Deng将已安装后的ns-allinone-2.27目录压缩后全部拷贝到自己的硬盘上。然后Deng再在自己的机子上安装了Cygwin。安装好后,为了不改动ns-allinone-2.27中已有的配置,Deng在/home目录下创建与Yang相同的用户文件夹,再把ns-allinone-2.27解压到此文件夹下。此时的问题是,由于Deng的用户名与Yang的用户名不同,所以在第一次运行Cgywin后,会在/home目录下自动创建一个Deng的文件夹,而Deng拷贝过来的ns-allinone-2.27应该位于Yang的文件夹下,所以需要修改Cygwin的默认启动路径。可行的方法如下:

默认情况下,打开Cygwin后,pwd显示当前路径为 /home/当前用户名。例如:

WCDJ@WCDJ_PC ~

$ pwd

/home/WCDJ

方法1:

用 env 命令查看目前系统中有哪些环境变量,可以找到:

HOME=/home/WCDJ

因此,想改变Cygwin默认启动路径就是去修改HOME的环境变量为你所想要的值就可以了。

方法如下:

右键 桌面上我的电脑->属性->高级->环境变量,在上面那个个人用户的环境变量框中,或者下面的系统变量框中,新建,变量名设置为HOME,变量值为你想要的具体路径。

如果在自己用户变量处建,那么这个变量值的有效范围就是当前自己用户。如果在系统变量处建,那么这个变量值的有效范围就是当前整个系统,也就是无论哪个用户登录系统,这个变量都有效。

这样,每次启动Cygwin后,就会自动转到HOME所在路径下。

方法2:

在C:/cygwin/cygwin.bat里面加入了这样一行

@echo off

C:

chdir C:/cygwin/bin

rem 新加的一行,手工指定home的路径(rem用于注释)

set HOME=C:/cygwin/home/abc

bash --login -i

这样Cygwin就会去HOME的这个路径下面找相关配置文件,如果C:/cygwin/home/abc下面有 .bashrc, .inputrc, .bash_profile 这样几个文件,Cygwin就能找到相关的配置。而不用管Cygwin是否创建了home,只要最后Cygwin能找到配置文件就OK了。

方法 3:

修改当前用户名,这个不太方便,没有采取。

关于那三个配置文件哪里找去?打开C:/cygwin/etc/skel 目录,你就会发现它们静静的躺在那里。这三个文件就是Cygwin一开始为用户准备的。把这三个文件拷贝到你的home目录下就可以了,然后用文本编辑器打开.bashrc 文件,把你需要设定的环境变量和参数写在这里,保存后重新启动Cygwin就可以看到已经生效了(注意 :如果不想重新启动Cygwin使.bashrc文件生效,输入source .bashrc 或 . .bashrc 命令即可)。

测试:

[1] ns 成功

[2] ./leach_test 成功

参考:

[1] 修改Cygwin的默认启动路径 [Change to default running path of Cygwin]

http://hi.baidu.com/serial_story/blog/item/366978106724b9f9c2ce797a.html

[2] Cygwin home路径问题

http://www.baisi.net/thread-39168-1-1.html