持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第14天,点击查看活动详情
问题描述
Bash 是大多数 Linux 发行版上的默认 shell。
Bash是一个命令处理器,通常运行于文本窗口中,并能执行用户直接输入的命令。Bash还能从文件中读取命令,这样的文件称为脚本。和其他Unix shell 一样,它支持文件名替换(通配符匹配)、管道、here文档、命令替换、变量,以及条件判断和循环遍历的结构控制语句。包括关键字、语法在内的基本特性全部是从sh借鉴过来的。其他特性,例如历史命令,是从csh和ksh借鉴而来。总的来说,Bash虽然是一个满足POSIX规范的shell,但有很多扩展。
在Windows下复现新版DFGAN时,因为DFGAN将命令和参数打包成了.sh的批处理文件,有时候要用到bash命令,而在输入bash命令时: bash scripts/train.sh ./cfg/coco.yml,可能会出现以下报错:
bash : 无法将“bash”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。 所在位置 行:1 字符: 1
'bash' 不是内部或外部命令,也不是可运行的程序或批处理文件。
显示乱码:'bash' �����ڲ����ⲿ���Ҳ���ǿ����еij��� ���������ļ���
问题原因
Windows未能支持bash指令
解决方案
1、使用旧版控制台
旧版控制台模式是一种兼容性工具,旨在帮助用户在 Windows 10 上运行较旧的命令行工具。
若要使用旧版控制台模式,请先打开任何控制台宿主窗口。 通常可通过启动命令解释器 CMD 或 PowerShell 来完成。
打开旧版控制台方法:
法一:右键单击应用程序标题栏,然后选择“Properties”菜单选项。 选择第一个选项卡“Options”。 然后选中描述 Use legacy console 的页面底部的框。 按“OK”按钮应用。
法二:打开cmd控制台,右键点击,打开属性,然后点击使用旧版控制台,然后再次打开cmd进行bash指令的输入
2、使用git-bash
git bash是一个适用于Microsoft Windows环境的应用程序,它为Git命令行体验提供了一个仿真层;相当于在window上通过git bash这个模拟的Unix命令行的终端。
打开git安装目录,打开git-bash.exe
然后通过cd 进入目录,进行bash命令的输入
3、开启linux子系统使用bash
打开 程序和功能,点击启用或关闭Windows功能
打开适用于Linux的Windows子系统
然后重启计算机,再次输入bash命令
4、使用os.system
创建一个py文件,使用os.system执行sh文件
import os
os.system('train.sh ./cfg/coco.yml')
5、安装WSL
WSL全称:Windows Subsystem for Linux(简称WSL),其是一个在Windows 10\11上能够运行原生Linux二进制可执行文件(ELF格式)的兼容层。它是由微软与Canonical公司合作开发,其目标是使纯正的Ubuntu、Debian等映像能下载和解压到用户的本地计算机,并且映像内的工具和实用工具能在此子系统上原生运行
现在,可以在管理员 PowerShell 或 Windows 命令提示符中输入此命令,然后重启计算机来安装运行适用于 Linux 的 Windows 子系统 (WSL) 所需的全部内容。
安装WSL,配置适用于 Linux 的 Windows 子系统GNU/Linux 环境 - 包括大多数命令行工具、实用工具和应用程序 - 且不会产生传统虚拟机或双启动设置开销。通过 WSL,可使用选择的发行版(Ubuntu、Debian、OpenSUSE、Kali、Alpine 等)在 Bash shell 中运行 Linux。 使用 Bash 可以运行命令行 Linux 工具和应用。 例如,键入 lsb_release -a 并按 Enter 后,将会看到当前正在运行的 Linux 分发版
然后打开WSL,将项目挪进子系统的文件夹中运行。