shell - 在带有包含路径的变量的 shell 脚本中使用 cd 命令在 Windows 10 主机的 CentOS virtualbox 环境中不起作用

标签 shell centos windows-10 virtualbox

背景:

我遇到了一个我的同事都没有遇到过 Linux 机器的问题。我有一台 Windows 10 机器,我通过在 shell 脚本中硬编码路径找到了一种解决方法,但这当然是不希望的。

以下是 Jetty 在 Windows 10 上托管的 CentOS 虚拟机中运行的 shell 脚本。如果您熟悉 Jetty,该行尤其位于 jetty.sh 的 #250 行。

问题:

在 shell 脚本中 cd命令不适用于变量:

cd "$JETTY_BASE"

错误:
: No such file or directory: cd: /opt/jetty

事实:
  • 目录存在。
  • 该变量包含正确的路径。
  • 当尝试使用硬编码路径执行以下命令时,shell 脚本可以工作:
    cd /opt/jetty

  • 问题:
  • 当它适用于其他所有人时,为什么该变量不适用于我的情况?
  • 我该如何解决这个问题?
  • 最佳答案

    答:

    事实证明,在 Jetty.sh 中,有一个配置文件设置了 $JETTY_BASE、$JETTY_HOME 变量。配置文件有 Windows 而不是 Unix 的行尾。将配置文件更改为使用 Unix 后,我将文件复制到 CentOS 虚拟机中,脚本正确执行。

    摘要:

    如果 Windows 是基于 Linux 的虚拟机的主机,请确保从 Windows 复制到基于 Linux 的虚拟机的文件使用基于 Unix 的行尾。

    关于shell - 在带有包含路径的变量的 shell 脚本中使用 cd 命令在 Windows 10 主机的 CentOS virtualbox 环境中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57169233/

    相关文章:

    shell - 运行命令并成功杀死

    linux - 如何执行jar文件中的.sh文件

    php - 无法登录 phpmyadmin

    postgresql - 无法使用 PostgreSQL 打开文件错误

    java - Windows 10 中的 Java 运行时环境检测到 fatal error

    Kubernetes Ingress Flask 应用程序

    linux - 使用 awk/sed 重新格式化长文件

    shell - 为什么在使用 rmdir 时在终端中出现 "Directory not empty"错误?

    mysql - 尝试启动 MySQL 守护进程时发生超时错误。中央操作系统 5

    javascript - 互联网浏览器 11 : MouseUp triggered on Scrollbar-MouseDown