jdk解压bin目录下无法执行java命令

时间:2022-05-18 12:19:35

在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一点源码分析的东东,未完待续~~