首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在用于ssh等的Emacs中,不能使用Windows Bash作为shell吗?

在 Emacs 中使用 Windows Bash 作为 shell 是可能的,但可能会遇到一些兼容性问题。以下是一些基础概念和相关信息:

基础概念

  1. Emacs: 一个广泛使用的文本编辑器,具有强大的扩展性和自定义能力。
  2. SSH: 安全外壳协议,用于远程登录和执行命令。
  3. Windows Bash: Windows 10 引入的子系统,允许在 Windows 上运行 Linux 环境。

相关优势

  • 跨平台兼容性: 使用 Windows Bash 可以在 Windows 上获得接近 Linux 的开发环境。
  • 统一的工作流程: 在 Emacs 中直接使用 Bash 可以保持与远程服务器上一致的开发体验。

类型与应用场景

  • 类型: 这通常涉及到配置 Emacs 的 shell 模式或外部工具(如 eshellshell 模块)。
  • 应用场景: 开发者需要在 Windows 上进行远程服务器管理或需要在本地模拟 Linux 环境时。

可能遇到的问题及原因

  1. 兼容性问题: Windows Bash 和 Emacs 可能在某些命令或脚本上存在不兼容。
  2. 路径问题: Windows 和 Unix 系统的路径格式不同,可能导致路径解析错误。
  3. 性能问题: 在 Windows 上运行 Bash 可能比在原生 Linux 系统上慢。

解决方法

  1. 配置 Emacs 使用 Windows Bash: 你可以在 Emacs 配置文件(通常是 ~/.emacsinit.el)中添加以下设置:
  2. 配置 Emacs 使用 Windows Bash: 你可以在 Emacs 配置文件(通常是 ~/.emacsinit.el)中添加以下设置:
  3. 使用 winpty: winpty 是一个允许 Windows 命令行工具与 GUI 应用程序交互的工具。你可以安装 winpty 并修改 Emacs 配置:
  4. 使用 winpty: winpty 是一个允许 Windows 命令行工具与 GUI 应用程序交互的工具。你可以安装 winpty 并修改 Emacs 配置:
  5. 检查路径和环境变量: 确保所有路径和环境变量都正确设置,特别是涉及到跨平台兼容性的脚本。
  6. 使用 WSL (Windows Subsystem for Linux): 如果可能,考虑直接使用 WSL 而不是 Windows Bash,因为 WSL 提供了更完整的 Linux 环境。

示例代码

以下是一个简单的 Emacs 配置示例,用于设置 Windows Bash 作为默认 shell:

代码语言:txt
复制
;; 设置 Windows Bash 路径
(setq explicit-shell-file-name "C:/Windows/System32/bash.exe")
(setq shell-file-name explicit-shell-file-name)
(setenv "SHELL" shell-file-name)

;; 可选:使用 winpty
;; (setq explicit-shell-file-name "C:/path/to/winpty.exe")
;; (setq shell-file-name explicit-shell-file-name)
;; (setenv "SHELL" shell-file-name)

通过这些配置,你应该能够在 Emacs 中顺利使用 Windows Bash。如果仍然遇到问题,建议检查具体的错误信息并进行相应的调试。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Windows 的开发好痛苦

最近,由于我需要在 Oculus Quest 2(VR一体机)上使用 VR,因此不得不经常使用 Windows。为了使用 Virtual Desktop,我必须把 Windows 作为主力机器。...我努力尝试在 Windows 上使用同样的 Emacs 设置(并去掉一些显然不可能的操作,比如在 Windows 上使用 Nix 等),但很快我就发现,这完全是在浪费时间。...02 开发工具 我使用的终端是 st,shell 是 fish。这个组合其实非常好,因为加载速度很快,并且 fish 支持很多好用的功能,例如基于历史的自动补齐等。...这一点在意料之中(许多 Git 的命令都是用 Perl 和 shell 脚本写的),但这已经是我的系统中安装的第三份 bash 了。 作为一个 NixOS 用户,这应该并不是什么大问题。...我很高兴地发现 Windows 会默认安装 ssh 甚至 ssh-keygen。这一点非常方便,我不需要再装一个 bash 了。

1.5K50

登录Shell与非登录Shell之间的区别

问题 我理解交互式shell和非交互式shell之间的基本区别。但是,登录shell和非登录shell之间究竟有什么区别呢? 你能给出一些非交互式登录shell的使用示例吗?...登录进程告诉shell以登录shell的方式运行,遵循一个惯例:将参数0(通常是shell可执行文件的名称)加上一个-字符作为前缀(例如-bash,而正常情况下是bash)。...•非登录Shell:当你在已经存在的会话中打开一个新的终端(例如在图形界面中打开一个新的终端窗口、在screen或tmux会话中打开一个新的窗口、在Emacs的终端缓冲区中打开一个新的Shell等)时,...3.参数传递: •登录Shell:登录Shell在启动时会接收一个特殊的参数-(dash),这告诉Shell它是一个登录Shell。例如,如果使用的是Bash,参数0会是-bash。...•非登录Shell:用于执行特定的命令或脚本,或者在已经存在的会话中打开新的Shell实例。

15010
  • 最近很火的wsl2你会用吗?

    是适用于 Linux 的 Windows 子系统, 允许开发人员直接在 Windows 上运行 GNU/Linux 环境(包括大多数命令行工具、实用程序和应用程序),无需修改,无需传统虚拟机或双引导设置的开销...运行 Bash shell 脚本和 GNU/Linux 命令行应用程序,包括:工具:vim、emacs、tmux 语言:NodeJS、Javascript、Python、Ruby、C/C++、C# &...F#、Rust、Go 等。...使用您自己的 GNU/Linux 分发包管理器安装附加软件。 使用类 Unix 命令行 shell 调用 Windows 应用程序。 在 Windows 上调用 GNU/Linux 应用程序。...简单来说,就是在windows上安装一个linux系统,无需安装VMware这样的臃肿虚拟机,性能和资源占用都有极大优化! 安装 适用于较新的win10和win11,请尽量更新一下。

    7.5K21

    Linux基础命令行使用技巧

    Vim、Emacs、Sublime、VS Code 等熟悉的编辑器中编辑文本时,通常会有一种十分舒服的感觉; Shell 命令行也能像文本编辑器一样编辑命令使我们的行编辑效率大大提升,下面我们将要学习Emacs...,Shell 并没有丢弃,而是将其保留在了删除缓冲器中,我们可以通过执行u命令来恢复这些删除的内容(可以多次使用) 替换文本:在删除该内容后再进入插入模式重新输入外,也可以使用 vi 编辑模式所提供的文本替换命令...WeiyiGeek. shopt 命令 描述:用于显示和设置shell中的行为选项,通过这些选项以增强shell易用性。 PS:若不带任何参数选项,则可以显示所有可以设置的shell操作选项。...在文件名扩展的结果中包括以点(.)开头的文件名 execfail off #如果一个非交互式shell不能执行指定给exec内置命令作为参数的文件它不会退出,如果exec失败一个交互式shell...,交换栈顶前两个元素 ❯ pushd /usr/bin /var/log/journal /etc/apt /etc/ssh / #示例2.pushd 命令中的 + (加号) 用于从上往下计数,使用

    5.9K63

    Linux基础命令行使用技巧

    Vim、Emacs、Sublime、VS Code 等熟悉的编辑器中编辑文本时,通常会有一种十分舒服的感觉; Shell 命令行也能像文本编辑器一样编辑命令使我们的行编辑效率大大提升,下面我们将要学习Emacs...,Shell 并没有丢弃,而是将其保留在了删除缓冲器中,我们可以通过执行u命令来恢复这些删除的内容(可以多次使用) 替换文本:在删除该内容后再进入插入模式重新输入外,也可以使用 vi 编辑模式所提供的文本替换命令...延迟(0-10,默认4):屏幕更新延迟 -C[颜色]:将此颜色用于矩阵(默认为绿色) WeiyiGeek. shopt 命令 描述:用于显示和设置shell中的行为选项,通过这些选项以增强shell易用性...在文件名扩展的结果中包括以点(.)开头的文件名 execfail off #如果一个非交互式shell不能执行指定给exec内置命令作为参数的文件它不会退出,如果exec失败一个交互式shell...,交换栈顶前两个元素 ❯ pushd /usr/bin /var/log/journal /etc/apt /etc/ssh / #示例2.pushd 命令中的 + (加号) 用于从上往下计数,使用

    6K20

    G站 50000+ Star 登顶,这份命令行艺术请查收!

    学会使用 ssh 进行远程命令行登录,最好知道如何使用 ssh-agent,ssh-add 等命令来实现基础的无密码认证登录。...see failed command above'" ERR 在 Bash 脚本中,子 shell(使用括号 (...))是一种组织参数的便捷方式。...例如你应当只能在可信任的网络中启用 StrictHostKeyChecking=no,ForwardAgent=yes。 考虑使用 mosh 作为 ssh 的替代品,它使用 UDP 协议。...在 Windows 10 上,你可以使用 Bash on Ubuntu on Windows,它提供了一个熟悉的 Bash 环境,包含了不少 Unix 命令行工具。...好处是它允许 Linux 上编写的程序在 Windows 上运行,而另一方面,Windows 上编写的程序却无法在 Bash 命令行中运行。

    85410

    Linux问题汇总

    bad interpreter: No such file or directory 在Windows环境下用Notepad++写了个shell脚本,上传到Linux平台后运行报错如下: /bin/sh...判断网络是否连通 有个通用命令,Windows和Linux都能使用,如下: ssh ip -v -p port -v表示调试模式,会打印出具体日志。-p表示端口号。...在Linux中,以.开头的文件都是隐藏文件,可以通过使用ll -a或者ls -a来查看。 而这种swp文件是隐藏文件,有两个作用: 避免用多个程序编辑同一个文件时,产生两个不同的版本。...新建一个~/.vimrc文件,在文件中添加一行代码: set noswapfile 这样该配置就只会对当前用户生效,你也可以直接修改/etc/vimrc文件,效果是一样的。.../a.sh: /bin/bash^M: bad interpreter: No such file or directory的解决方法 DOS、Mac 和 Unix 文件格式+ UltraEdit使用

    1.2K20

    在 shell 中使用 vi 模式

    今天我在这里会为你介绍 shell 中的 vi 模式。 在计算和操作系统的庞大生态系统中有很多 shell。...然而,在 Linux 世界中,bash 已经成为事实上的标准,并在在撰写本文时,它是所有主要 Linux 发行版上的默认 shell。因此,它就是我所说的 shell。...需要注意的是,bash 在其他类 UNIX 操作系统上也是一个相当受欢迎的选项,所以它可能跟你用的差别不大(对于 Windows 用户,可以用 cygwin)。...没接触过的人和新手可能没有意识到 bash shell 的默认输入模式是 Emacs 模式,也就是说命令行中所用的行编辑功能都将使用 Emacs 风格的“键盘快捷键”。...使用复杂的快捷键组合并记住可能看起来很愚蠢,但是在使用较长的命令或从 shell 历史记录中调用一个命令并想再次编辑执行时,它们可能会非常强大。

    1.4K70

    Git:Git初体验——Git安装配置

    作为即将成为一个程序员的男人,一直在听别人说Git多好多好,之前也随便了解了一些,但是始终没有决心去学会。...安装的时候会提示选择安装Git UI,因为默认是使用Git Bash,也就是Git的命令行。...Git UI是给windows用户的一个Git图形界面,虽说是为了方便,但是程序员还是应该用最纯朴的方式,命令行来完成这项工作,所以我还是强烈建议使用Git Bash。   ...如果你有其他偏好,比如 Emacs 的话,可以重新设置:: $ git config --global core.editor emacs   差异分析工具   还有一个比较常用的是,在解决合并冲突时使用哪种差异分析工具...Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以我们需要配置验证信息:   使用以下命令生成SSH Key: $ ssh-keygen -t rsa -C "youremail@example.com

    1.4K20
    领券