在windows7中安装了一个vmware,vm中装了Ubantu。
jdk的解压目录为:
/home/q/java/jdk1.7.0_45
进入jdk下的bin/下的bin目录,执行./javac Hello.java (当然我在该目录下放了一个Hello.java文件,并且权限没有问题)或 其它任意命令,都显示
bash ./java:no such file or directory
百思不得解!!!!
------------------------------------------分割线------------------------------------------------------------------------
深入思考:unix/linux在一个目录下运行一条命令,为什么要加./?
感觉这里涉及的知识点有文件/目录结构、进程组/会话、进程加载。不知道是我想复杂了!
一、当打开一个shell窗口会发生些什么?
打开一个窗口,让问题变得稍微复杂了一点(因为图形窗口也应该是一个或多个进程),为了更简洁,我在自己一个单独的Ubantu系统中Ctrl+Alt+F1转到了tty1终端(我认为很久以前人们就是这样使用计算机吧~)。
现在输入如下命令:ps -e | grep "bash"
显示:3235 tty1 00:00:00 bash
字段的解释:进程号, 进程所在终端, 进程运行时间, 进程名字(这些东西现在只有一个肤浅的认识)
使用ps -a命令查看“该终端下的所有进程”。
显示:
PID TTY TIMECMD
3235 tty100:00:00 bash
4287 tty1 00:00:00 ps
那么,问题来了,迷雾也要慢慢拨开了,在tty1终端下输入ps -a的时候发生了些什么?
在测底弄清楚这个问题之前,估计需要测底弄明白“环境变量”(又是一桩复杂事),那么先分析简单的。
我自己在这个目录下用c语言写一个helloworld,(程序名字叫做hello,功能就是输出“hello world”)。
(1)那么,怎么执行这个程序?
(2)执行这个程序的时候发生了些什么?
现在就来慢慢回答:
(1)当我们位于hello可执行文件所在的目录时,执行命令: ./hello
(2)我们敲这个./hello发生了些什么?????——这是最需要、最值得弄明白的!
需要bash一点源码分析的东东,未完待续~~