千家信息网

Windows下Emacs中的zsh Shell怎么理解

发表于:2024-10-12 作者:千家信息网编辑
千家信息网最后更新 2024年10月12日,本篇文章为大家展示了Windows下Emacs中的zsh Shell怎么理解,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。运行跨平台 shell(例如 Bas
千家信息网最后更新 2024年10月12日Windows下Emacs中的zsh Shell怎么理解

本篇文章为大家展示了Windows下Emacs中的zsh Shell怎么理解,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

运行跨平台 shell(例如 Bash 或 zsh)的***优势在于你能在多平台上使用同样的语法和脚本。在 Windows 上设置(替换)shell 挺麻烦的,但所获得的回报远远超出这小小的付出。

zsh shell inside Emacs on Windows

MSYS2 子系统允许你在 Windows 上运行 Bash 或 zsh 之类的 shell。使用 MSYS2 很重要的一点在于确保搜索路径都指向 MSYS2 子系统本身:存在太多依赖关系了。

MSYS2 安装后默认的 shell 就是 Bash;zsh 则可以通过包管理器进行安装:

pacman -Sy zsh

通过修改 etc/passwd 文件可以设置 zsh 作为默认 shell,例如:

mkpasswd -c | sed -e 's/bash/zsh/' | tee -a /etc/passwd

这会将默认 shell 从 bash 改成 zsh。

要在 Windows 上的 Emacs 中运行 zsh ,需要修改 shell-file-name 变量,将它指向 MSYS2 子系统中的 zsh 二进制文件。该二进制 shell 文件在 Emacs exec-path 变量中的某个地方。

(setq shell-file-name (executable-find "zsh.exe"))

不要忘了修改 Emacs 的 PATH 环境变量,因为 MSYS2 路径应该先于 Windows 路径。接上一个例子,假设 MSYS2 安装在 c:\programs\msys2 中,那么执行:

(setenv "PATH" "C:\\programs\\msys2\\mingw64\\bin;C:\\programs\\msys2\\usr\\local\\bin;C:\\programs\\msys2\\usr\\bin;C:\\Windows\\System32;C:\\Windows")

在 Emacs 配置文件中设置好这两个变量后,在 Emacs 中运行:

M-x shell

应该就能看到熟悉的 zsh 提示符了。

Emacs 的终端设置(eterm)与 MSYS2 的标准终端设置(xterm-256color)不一样。这意味着某些插件和主题(提示符)可能不能正常工作 - 尤其在使用 oh-my-zsh 时。

检测 zsh 否则在 Emacs 中运行很简单,使用变量 $INSIDE_EMACS

下面这段代码片段取自 .zshrc(当以交互式 shell 模式启动时会被加载),它会在 zsh 在 Emacs 中运行时启动 git 插件并更改主题:

# Disable some plugins while running in Emacsif [[ -n "$INSIDE_EMACS" ]]; then  plugins=(git)  ZSH_THEME="simple"else  ZSH_THEME="compact-grey"fi

通过在本地 ~/.ssh/config 文件中将 INSIDE_EMACS 变量设置为 SendEnv 变量……

Host myhostSendEnv INSIDE_EMACS

……同时在 ssh 服务器的 /etc/ssh/sshd_config 中设置为 AcceptEnv 变量……

AcceptEnv LANG LC_* INSIDE_EMACS

这使得在 Emacs shell 会话中通过 ssh 登录另一个运行着 zsh 的 ssh 服务器也能工作的很好。当在 Windows 下的 Emacs 中的 zsh 上通过 ssh 远程登录时,记得使用参数 -t-t 参数会强制分配伪终端(之所以需要这样,时因为 Windows 下的 Emacs 并没有真正的 tty)。

上述内容就是Windows下Emacs中的zsh Shell怎么理解,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

变量 运行 文件 子系统 终端 路径 主题 二进制 内容 参数 就是 技能 指向 提示符 插件 服务器 知识 中设 提示 服务 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 浙江鲲鹏服务器 软件服务器怎么重装系统 管理软件开发需要多钱 电子支付与网络安全第三版 服务器显示器超出显示范围 研究生数据库具体方向 软件开发用r5还是i5 怎么写网络安全活动简讯 政务网络安全考试费用 大型图数据库设计 订货管理系统数据库源码 打开浏览器显示代理服务器有问题 方舟进服务器为什么那么慢 山东软件开发企业 通信软件和嵌入式软件开发 网络安全法是什么时候实施颁布的 网络安全新技术拓展工程师 基于c 软件开发公司 c 实现数据库数据同步 安徽大学思科网络技术学院 赛问软件开发有限公司地址 四川联想服务器维修维保哪家便宜 手机软件开发如何实现 网络安全工作时的原则 幼儿园网络安全宣传手绘画 税务局网络安全比赛心得 汕尾市委网络安全和信息化 省考网络安全题库 万方是文献检索数据库吗 服务器密码过期无法执行任务
0