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'