linux中的 /home /boot /bin 等,是分区还是目录?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux中的 /home /boot /bin 等,是分区还是目录?相关的知识,希望对你有一定的参考价值。

是目录. Linux 中分区不会直接出现, 而是以目录的形式挂载到系统的目录结构中.

假设一台电脑有1个硬盘,其中有2个分区, 其中Linux安装在第一个分区中, 那么 /home 可以是第一个分区中的真实目录而且可以直接存放数据,也可以是将第二个分区挂载到 第一个分区中的挂载点上,这是/home 只是一个挂载点, 真实的数据全部存到第二个分区了. 这个概念有点类似于Windows 中常用的快捷方式.
参考技术A 是目录。
如果安装时,硬盘分了多个分区,让某些目录独立出来,将一个分区挂载到该目录,此时该目录就代表这个分区了。
比如,通常单独分一个分区来挂载到/home,这个分区就叫home分区;单独分一个分区来挂载到/boot,这个分区就叫boot分区……
参考技术B 简单的辨别方法:
df -h
上述命令输出结果中如果可以看到/home /boot /bin,则是分区,否则查看/etc/fstab文件
more /etc/fstab
如果还是没有看到/home /boot /bin的分区对应关系,则可以确定是目录。
参考技术C 1、目录肯定存在,目录可以是独立分区也可以是在根分区
2、用命令df -h可以看到
3、如果home是单独分区
[root@server105 ~]# df -h /home/
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 97G 815M 92G 1% /home
4、如果home在根分区
[root@server105 ~]# df -h /home
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 48G 3.8G 42G 9% /
5、结合fdisk -l,搞清楚硬盘分了几个分区,检查分区mount的路径
df -h /dev/sda1
df -h /dev/sda3
参考技术D 是目录.
分区是要mount到目录上才能使用的, 所以如果/home上面mount了一个分区, 那你也可以认为它是一个分区.本回答被提问者采纳

Linux 中的 JAVA_HOME 目录

【中文标题】Linux 中的 JAVA_HOME 目录【英文标题】:JAVA_HOME directory in Linux 【发布时间】:2010-11-10 04:25:38 【问题描述】:

我可以使用任何 linux 命令来查找 JAVA_HOME 目录吗?我尝试打印出环境变量(“env”),但找不到目录。

【问题讨论】:

【参考方案1】:

只是另一种解决方案,这是一个跨平台(使用java),并将您指向jre 的位置。

java -XshowSettings:properties -version 2>&1 > /dev/null | grep 'java.home'

输出java 的所有当前设置,并找到名为java.home 的设置。

对于 Windows,您可以使用 findstr 而不是 grep。

java -XshowSettings:properties -version 2>&1 | findstr "java.home"

【讨论】:

我已经研究了很多方法来找到 JAVA_HOME,我认为这是最好的方法之一!感谢您提及! 很高兴它有帮助! 可能值得一提的是,它开始使用 JDK1.7 (IIRC)。在此之前,您需要致电:jrunscript -e 'java.lang.System.out.println(java.lang.System.getProperty("java.home"));'。在这两种情况下,对于“跨平台”方面,建议在前面加上 /usr/bin/env 天哪,这个比其他的都好用,谢谢! 这是更好的答案。【参考方案2】:

这是一个改进,只将目录抓取到标准输出:

java -XshowSettings:properties -version 2>&1 \
   | sed '/^[[:space:]]*java\.home/!d;s/^[[:space:]]*java\.home[[:space:]]*=[[:space:]]*//'

【讨论】:

有点短,虽然是三个叉子而不是两个,但如下:: $JAVA_HOME:=$(/usr/bin/env java -XshowSettings:properties -version 2>&1 | grep "java.home" | cut -d"=" -f2) 如果需要直接导出路径:export $(/usr/bin/env java -XshowSettings:properties -version 2>&1 | grep "java.home" | sed -e 's/java.home/JAVA_HOME/;s/ //g;')【参考方案3】:

echo $JAVA_HOME 将打印已设置的值。但是,如果您没有在启动脚本中手动设置它,它可能没有设置。

如果您尝试which java 并没有找到任何东西,Java 可能没有安装在您的机器上,或者至少不在您的路径中。根据您拥有的 Linux 发行版以及是否具有 root 访问权限,您可以前往 http://www.java.com 下载您需要的版本。然后,您可以将 JAVA_HOME 设置为指向该目录。请记住,这只是一个约定,不应用于确定是否安装了 java。

【讨论】:

JAVA_HOME 在 Linux 系统中不再定义并且已弃用。 @PeterQuiring 你应该引用你的声明的来源......你错了。 @harschware 当我安装 Ubuntu 时,没有设置 JAVA_HOME,即使安装了 JDK。另请阅读 /usr/share/doc/openjdk-8-jre-headless/JAVA_HOME 并说不再需要 JAVA_HOME(旧版)。 @PeterQuiring 谢谢彼得,不幸的是我无法轻松访问该文件。也许在 Java 8 中会努力弃用它,但依赖 JAVA_HOME 的工具数量之多将要求继续定义该变量多年...... @harschware 这可能只是一个 Ubuntu 的东西。也许其他发行版仍然定义它。【参考方案4】:

在 Linux 上,您可以运行 $(dirname $(dirname $(readlink -f $(which javac))))

在 Mac 上你可以运行 $(dirname $(readlink $(which javac)))/java_home

我不确定 Windows,但我想 where javac 会让你非常接近

【讨论】:

这是一个很好的解决方案,但请记住对 readlink 使用规范标志,因为 Java 可以设置多个链接,因此请在 Linux 上使用 $(dirname $(dirname $(readlink -f $(which javac)))) 谢谢@MatthewO'Riordan!我为 linux 命令添加了-f 标志。请注意,mac 上的readlink 不是GNU 版本,所以我排除了-f 用于脚本的mac 版本。通过 brew 安装了 GNU 版本的 readlink 的 Mac 用户可以使用 -f 这对于使用 /etc/alternatives 管理不同 java 版本的人来说特别好。 在 Mac OS 上运行良好 这是查找任何主路径的最佳解决方案。我经常将它用于 java、maven 等!谢谢!【参考方案5】:

如果在您的环境中定义了$JAVA_HOME...

$ echo $JAVA_HOME
$ # I am not lucky...

你可以从加载的类中猜出来。

$ java -showversion -verbose 2>&1 | head -1
[Opened /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.75.x86_64/jre/lib/rt.jar]

此方法可确保您找到正确的jdk/jre,以防有多个安装。

或者使用strace:

$ strace -e open java -showversion 2>&1 | grep -m1 /jre/
open("/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.75.x86_64/jre/bin/../lib/amd64/jli/tls/x86_64/libpthread.so.0", O_RDONLY) = -1 ENOENT (No such file or directory)

【讨论】:

【参考方案6】:

http://www.gnu.org/software/sed/manual/html_node/Print-bash-environment.html#Print-bash-environment

如果你真的想得到一些关于你的 BASH 的信息,把那个脚本放在你的 .bashrc 中,然后看着它飞过去。您可以滚动并查看它。

【讨论】:

【参考方案7】:

显示您使用的环境变量的值:

回显 $VARIABLE

所以你的情况是:

回显 $JAVA_HOME

如果你没有设置,你可以在你的.bashrc文件中添加:

导出 JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")

当你更新你的包时它会动态变化。

【讨论】:

不安全的 sed 命令:如果 /usr/bin/java 是指向 /usr/bin/java-8/bin/java 的符号链接怎么办?你会得到输出/usr/-8/bin/java 绝妙的解决方案!如果你想使用 jdk 作为 home 而不是 jre,只需调整 readlink -f /usr/bin/java | sed "s:jre/bin/java::"【参考方案8】:

我知道这已经晚了,但是这个命令搜索 /usr/ 目录为你找到 java

sudo find /usr/ -name *jdk

结果

/usr/lib/jvm/java-6-openjdk
/usr/lib/jvm/java-1.6.0-openjdk

仅供参考,如果您使用的是 Mac,当前 JAVA_HOME 位于

/System/Library/Frameworks/JavaVM.framework/Home

【讨论】:

不得不使用 sudo find / -name *javac 来查找我安装的 oracle 虚拟机 你可能想试试sudo find /usr/ -name *jdk*,因为我的路径是/usr/lib/jvm/java-7-openjdk-amd64/【参考方案9】:

你设置了你的 JAVA_HOME

Korn 和 bash 外壳:export JAVA_HOME=jdk-install-dir Bourne shell:JAVA_HOME=jdk-install-dir;export JAVA_HOME C shell:setenv JAVA_HOME jdk-install-dir

【讨论】:

【参考方案10】:

在终端上,输入:

回显“$JAVA_HOME”

如果您没有得到任何东西,那么您的环境变量 JAVA_HOME 尚未设置。您可以尝试使用“locate java”来尝试发现您的 Java 安装位置。

【讨论】:

以上是关于linux中的 /home /boot /bin 等,是分区还是目录?的主要内容,如果未能解决你的问题,请参考以下文章

java工程打包部署到linux下根据url找jar包里的文件找不到,请教。

简述linux系统中以下目录的主要内容: /home /tmp /etc /bin /sbin /var

Linux编译C语言时出错 /home/zwlong/222/LESduct2.c:323: undefined reference to `sqrt'

linux ext4 /opt分区调整磁盘至/home分区

linux分区的时候,可以把/boot和/home挂载在不同的硬盘上吗

linux下面的/home是一个盘符还是其他啥概念?