在cp -r jdk1.8.0_331 /usr/java
命令行中,它会产生这样的文件夹:
# ls /usr/java/jdk1.8.0_331/
bin COPYRIGHT include javafx-src.zip jmc.txt jre legal lib LICENSE man README.html release src.zip THIRDPARTYLICENSEREADME-JAVAFX.txt THIRDPARTYLICENSEREADME.txt
然而,一旦我将其放入 shell 脚本并在远程主机中运行,ssh root@app-1 < java_install.sh
就会出现这样的文件夹:
# ls /usr/java/
bin COPYRIGHT include javafx-src.zip jmc.txt jre legal lib LICENSE man README.html release src.zip THIRDPARTYLICENSEREADME-JAVAFX.txt THIRDPARTYLICENSEREADME.txt
一层关闭。为什么?如何在远程 shell 脚本中将文件夹作为子文件夹复制到另一个文件夹中?
这是整个脚本:
#!/bin/bash
tar -zxvf jdk-8u331-linux-x64.tar.gz
cp -r jdk1.8.0_331 /usr/java
echo '
export JAVA_HOME=/usr/java/jdk1.8.0_331
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}
' >> /etc/profile
source /etc/profile
java -version
我刚刚发现,当运行两次脚本时,第二次,它将 jdk1.8.0_331 移动到 /usr/java/jdk1.8.0_331。
答案1
确保父目录/usr/java
存在然后再复制到其中。