您现在的位置是:娱乐 >>正文
windows运行shell脚本
娱乐457人已围观
简介Windows 上跑 shell 脚本?很多人第一反应是“那玩意儿不是 Linux 的东西吗?”——对,也不对。Windows 10 之后系统里其实自带了一个完整的 Linux 子系统WSL),装上就 ...
Windows 上跑 shell 脚本?脚本很多人第一反应是“那玩意儿不是 Linux 的东西吗?”——对,也不对。脚本Windows 10 之后系统里其实自带了一个完整的脚本 Linux 子系统(WSL),装上就能直接跑 bash、脚本python、脚本docker 那套生态。脚本但如果你不想装子系统,脚本或者只是脚本临时想跑个几百行的 .sh 文件,也有更轻量的脚本路子。
先说最直接的脚本笨办法:把 Git 装上去。Git for Windows 会附带一个叫 Git Bash 的脚本终端,这玩意儿本质是脚本一个模拟的 Unix 环境,里面能看到 /usr/bin、脚本/etc 这些目录,脚本ls、脚本grep、awk 这些命令基本都有。你双击打开 Git Bash,把脚本拖进窗口,敲个 `bash 你的脚本.sh` 就能跑。很多开发者没意识到,他们电脑里早就装了 Git,却还去搜“Windows 怎么运行 Linux 命令”——浪费了现成的工具。
但 Git Bash 有个坑:它模拟出来的环境不完整。比如你用 `curl` 下载文件,有时候会遇到证书路径的问题;用 `sed -i` 直接改文件,在 Windows 换行符(CRLF)和 Linux 换行符(LF)之间来回横跳,能把脚本搞出诡异的报错。这时候你得在脚本开头加一行 `export SHELLOPTS` 或者干脆用 `dos2unix` 转换一下格式。说实话,这种折腾对新手不太友好,但对老手来说反而多了些掌控感。
真正省心的方案,是启用 WSL。微软这几年把 WSL 做得越来越顺滑,从 WSL1 到 WSL2,文件系统性能提升了不少。你只需要在 PowerShell 里敲一句 `wsl --install`,重启一次电脑,就能在开始菜单里看到 Ubuntu 的图标。进去之后,那是一个完整的 Linux 内核,你可以在里面装任何东西——包括把整个 Linux 服务器环境跑起来。WSL 和 Windows 文件系统是互通的,你可以在 Windows 的 C 盘里写脚本,然后到 WSL 里用 `cd /mnt/c/...` 来访问它。
不过 WSL 也有个反直觉的地方:它默认把 Windows 的 PATH 环境变量混进来。这意味着你在 WSL 里敲 `notepad.exe` 能直接打开 Windows 记事本,听起来方便,但有时候会引发冲突。比如你装了 Python,Windows 上有个版本,WSL 里也有个版本,脚本里写 `python` 到底调用哪个?不一定。我遇到过脚本跑着跑着突然弹出一个 Windows 窗口,因为某行命令调用了 `explorer.exe`——这让我哭笑不得。
如果你连 Git 都不想装,Windows 自带的 PowerShell 其实也能处理。PowerShell 可以直接执行 `.sh` 文件里的内容,前提是你要用 `Get-Content` 读取,然后用 `Invoke-Expression` 去执行每一行。但这种方式只适合简单脚本,遇到复杂的正则、管道、进程控制就废了。更推荐的做法是:在 PowerShell 里调用 `bash` 命令——前提是你已经装了 WSL 或者 Git Bash,然后像 `bash -c "你的命令"` 这样混着用。
最后说个经验:别小看 Windows 上跑脚本这件事。我见过不少团队,服务器是 Linux,但开发机是 Windows,结果每次部署都要把脚本在本地测一遍,再传到服务器上,来回改格式,浪费大把时间。现在有了 WSL,直接在本地模拟生产环境,跑通了再上传,效率翻倍。但如果你只是偶尔跑一次脚本,别去折腾 WSL,装个 Git Bash 就够用了——别让工具本身成为负担。
Tags:
上一篇:王者荣耀官网爆料站
下一篇:反渗透净水机哪个牌子好
相关文章
冒充网信
娱乐手机屏幕亮着,一条短信跳出来:“【网信办】您的账号涉嫌违规,请于两小时内点击链接完成认证,逾期将永久封停。”号码是普通的手机号,不是106开头的官方号段。我盯着“网信办”三个字看了三秒——这已经是这个 ...
【娱乐】
阅读更多服务器渗透入侵全部教程
娱乐凌晨两点,我盯着屏幕上的绿字发呆。目标的Apache版本是2.4.49,恰好存在那个被CVE-2021-41773标记的路径穿越漏洞。一个curl命令就能读到/etc/passwd,但真正的入侵从来不 ...
【娱乐】
阅读更多mysql数据库基础知识
娱乐mysql数据库基础知识 我见过太多人把MySQL当Excel用——建个表,往里塞数据,查询全靠`SELECT *`,然后抱怨“数据库好难”。其实MySQL没那么玄乎,它就是个存东西的仓库,只不过这 ...
【娱乐】
阅读更多