which java_Linux 使用 which 与 $()来定位并执行命令

本文介绍了如何在Linux中利用which命令查找可执行文件路径,并结合$()语法确保脚本跨服务器的执行稳定性。通过实例展示了如何在不同服务器环境中获取Java路径,以及为什么这种方法对于脚本移植和安全至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linux 使用 which 与 $() 来定位并执行命令,示例如下:

[cdp@cdppguat data-api]$ $(which java) -version

java version "1.8.0_201"

Java(TM) SE Runtime Environment (build 1.8.0_201-b09)

这里用到了两个 shell 中的知识:

一是 which 命令,which 命令的功能是从用户的 path 目录中搜索可执行文件并返回。

二是 $() 的语法,$() 表示执行 () 里的命令并将结果返回。

如果你要在某个脚本中使用某个命令去执行一个程序,一般是第三方程序,那么这种写法会更 “安全”,也更易于移植。首先 $(which java) 获取的是绝对路径,可以规避相对路径带来的不可控异常,其次 $(which java) 可以便于在不同的服务器上运行。

当然,前提是你的程序已经配置了环境变量。

比如:服务器 A 上的 Java 安装位置如下:

[cdp@cdppguat data-api]$ echo $(which java)

/opt/jdk1.8.0_201/bin/java

服务器 B 上的 Java 安装位置如下:

[cdpadmin04@sltwy4qasyy data-api]$ echo $(which java)

/usr/local/java/jdk/bin/java

如果要在服务器 A&B 上都运行一个脚本来执行一个 Java 程序,如果你在服务器 A 上的脚本是写的路径 /opt/jdk1.8.0_201/bin/java,那么这个脚本放到服务器 B 上是肯定运行不了的,因为服务器 B 上的 /opt/jdk1.8.0_201/bin/java 位置找不到 Java 命令。

### 如何正确使用 `export` 命令将 JAVA_HOME 添加到 PATH 环境变量中 为了确保 Java 配置生效,可以通过 `export` 命令将 `JAVA_HOME` 的值添加到 `PATH` 环境变量中。以下是具体实现方式: #### 设置 `JAVA_HOME` 和 `PATH` 在 Linux 系统中,通常会先定义 `JAVA_HOME` 变量指向 JDK 安装目录,然后将其 bin 子目录路径追加到 `PATH` 中以便全局访问 Java 工具。 ```bash export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.102-4.b14.el7.x86_64 export PATH=$JAVA_HOME/bin:$PATH ``` 上述命令的作用如下: - 第一条命令设置了 `JAVA_HOME` 为指定的 JDK 路径[^1]。 - 第二条命令将 `$JAVA_HOME/bin` 追加到了现有的 `PATH` 环境变量前面,从而优先使用此路径中的可执行文件[^2]。 #### 验证配置是否成功 完成以上设置后,可通过以下命令验证配置是否生效: ```bash echo $JAVA_HOME java -version which java ``` - `echo $JAVA_HOME` 将显示当前 `JAVA_HOME` 的值,确认其被正确设置。 - `java -version` 显示当前使用Java 版本信息,如果输出的是预期版本,则说明配置成功。 - `which java` 返回 `java` 执行程序的实际路径,应 `$JAVA_HOME/bin/java` 对应。 #### 持久化环境变量 临时通过终端输入 `export` 命令仅会在当前 shell 会话有效。要让这些更改永久生效,需将相关语句加入用户的 Shell 配置文件中,例如 `.bashrc` 或 `.profile` 文件。 编辑配置文件添加以下内容: ```bash export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.102-4.b14.el7.x86_64 export PATH=$JAVA_HOME/bin:$PATH ``` 保存文件后运行以下命令使其立即生效: ```bash source ~/.bashrc ``` 或者如果是其他配置文件则替换相应名称。 --- ### 注意事项 虽然理论上可以直接修改 `PATH` 来包含 JDK 的 bin 目录而不显式声明 `JAVA_HOME`,但推荐始终设定后者。这样不仅便于管理不同版本间的切换,还可能简化某些依赖于 `JAVA_HOME` 的软件安装过程[^3]。 此外,在多用户环境中调整系统级环境变量时务必小心操作以免影响其他使用者的工作环境[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值