Questions tagged «shell»

有关将单个命令行传递给Shell子进程,与输入和输出交互地运行Emacs缓冲区的Shell以及在终端仿真器窗口中运行Shell的命令的问题。

2
使用IPython 5时奇怪的shell输出
我刚刚升级到最新版本的IPython,现在在emacs中使用它时出了点问题。 当在常规的终端中使用它,它工作正常(颜色,标签完成等),但是无论是在M-x eshell或M-x shell代替outputing In [1]:,它实际上输出[?12l[?25h和Out[1]输出到[J[?7h[?12l[?25h[?2004l[?7hOut[1]:。 也许这是IPython使用的emacs上没有的终端的某些功能,但是我想知道它是哪一个。 Terminal.app: In [1]: 2+2 Out[1]: 4 埃马克斯 [?12l[?25h2+2 [J[?7h[?12l[?25h[?2004l[?7hOut[1]: 4
37 shell  eshell  ipython 



6
OSX上的Emacs和命令行$ PATH不一致
PATHEmacs 上的设置存在一些影响我Haskell环境的问题: 我正在使用ZSH,当我转到命令行并调用时echo $PATH,它将返回:/Users/g/Library/Haskell/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin 这来自.zprofile我有的配置: # Set the list of directories that Zsh searches for programs. path=( ~/Library/Haskell/bin /usr/local/{bin,sbin} $path ) 因此,从命令行,当我调用时which cabal,我正确地得到了:/Users/g/Library/Haskell/bin/cabal 当我启动Emacs并转到shell和调用时which cabal,我得到:/usr/bin/cabal这是我的问题,因为它是另一个版本。 echo $PATH从Emacs进行检查时shell,我看到:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/g/Library/Haskell/bin:/usr/local/sbin 我不知道到底PATH会有什么不同... 有谁知道如何让我的ZSHshell和Emacs达成一致PATH?我怀疑那是控制cabal从何处加载的内容。 更新:echo $SHELL从Emacs 运行打印:/bin/zsh 更新2:这是在OSX上。 更新3:我试图使用exec-path-from-shell模块,它不起作用。我仍然有相同的问题,而且副作用是,它弄乱了我的终端主题颜色:( 更新4:我已经通过安装了Emacs,brew install --cocoa --srgb emacs并且运行了以这种方式链接的emacs: ~ ❯❯❯ which emacs /usr/local/bin/emacs ~ ❯❯❯ l /usr/local/bin/emacs lrwxr-xr-x 1 …
18 osx  shell  path  haskell-mode 


2
Tramp模式比使用终端ssh慢得多
我在OSX Yosemite上使用的是Macports风格的Emacs,并且在没有任何解决方案的情况下,查看了Tramp上的每个线程都很慢。 可以使用陷阱,但每个动作之间大约有100毫秒的延迟。在服务器端这不是问题,因为如果我仅使用terminal / iTerm将ssh切换到同一服务器,则此延迟不存在。 我认为问题可能仅限于编辑文件,但事实证明它无处不在。无论我是仅使用远程外壳,还是仅按M-x(使用头盔),都被延迟了。 我已经尝试过ssh,scp和rsync作为连接方法,而没有任何解决方案。也尝试过ControlMaster auto没有任何效果。 还有其他人有这个问题,并且能够解决吗?
14 shell  tramp  remote 

2
.bash_profile或.bashrc用于emacs中的shell?
我为一个巨大的命令编写了一个别名,并将其存储在其中.bash_profile,令我惊讶的是,emacs没有使用我在其中编写的别名.bash_profile。在Internet上进行一些搜索之后,我.bashrc使用别名命令在$ HOME中创建了一个文件,仅在该emacs选择了别名之后。我很困惑,因为terminal.app取别名,.bash_profile而emacs仅取别名.bashrc。 我正在跑步,M-x shell并且正在使用macOS。有人可以解释一下我与emacs和.bashrc&有什么关系.bash_profile。 更重要的是,我怎样才能使Emacs .bash_profile除了阅读我的书.bashrc?
11 shell  bash 

1
使用eshell / TRAMP / dtach附加到运行中的远程Shell
我经常使用GNU Screen使远程会话保持活动状态。由于我住在Emacs中,因此我非常希望能够从Emacs中恢复正在运行的远程Shell会话。 GNU Screen实现了我真正不需要的各种奇特功能,例如终端多路复用和字符绘制。我真的只对拥有可分离和可恢复的shell会话感兴趣,所以简单的事情dtach就足够了。 我正在使用此功能来打开SSH会话并重新连接到的运行dtach会话shell-mode(从此处获取): (defun ssh-dtach (host) "Open SSH connection to remote host and attach to dtach session." (interactive) (let ((explicit-shell-file-name "dtach") (explicit-dtach-args '("-A" "/tmp/emacs.dtach" "-z" "/bin/bash" "--noediting" "-login")) (default-directory (format "/ssh:%s:" host))) (shell (format "*ssh %s*" host)))) 尽管有一些小怪癖,但这对于几乎可以用shell-mode,但是在Eshell中,这仅启动了一个子进程,因此终端变得非常有限(例如,没有路径自动完成)。 dtach连接到远程服务器后,如何配置Eshell以连接到正在运行的会话? 编辑: 当我再次考虑这个问题时,我意识到尚不清楚我真正想要的是什么。清单: 我想留在eshell中,而不是在某些子过程中 重新连接后,我希望重播远程会话的输出并且远程命令历史记录可用 我希望能够与正在运行的远程进程进行交互(例如正在yum install等待我的输入) 看来我需要编写一些elisp代码才能使所有这些与dtach一起使用。
11 eshell  shell  remote  ssh 

1
纠缠源代码块时是否可以从STDIN中读取用户输入?
在与源块纠缠的同时,是否可以从STDIN中读取用户输入org-babel-tangle? 我知道:Org Mode Babel-交互式代码块评估。 这无助于解决这个特殊的用例,因为它仍然不允许来自shell的正确STDIN输入,而只能在Emacs 内部模拟有限的输入。 背景 我想使用Org的Babel通过从一个组织文件执行一些教程来学习新的编程语言(Perl和Bash)。 问题在于许多教程都依赖于STDIN。例如,如果运行以下perl tidbit: #+BEGIN_SRC perl :tangle hello-name.pl :results output :export code use 5.010; use strict; use warnings; say "What is your name?"; my $name=<STDIN>; say "Hello $name, how are you?"; #+END_SRC Emacs不会等待用户的交互在STDIN上正确键入名称,它将立即输出: #+RESULTS: : What is your name? : Hello , how are …

1
如何防止一个子进程饿死其他子进程?
明确地说,我不是在谈论任何需要emacs多线程的东西(尽管这也可能会解决这个问题)。复制: emacs -Q#我正在运行24.4.1 制作第二帧 切换回第一帧 MX壳 MX唯一重命名(稍后我们将制作第二个Shell) 开始运行: while true; do echo "hello world"; done 在第二帧中,Mx shell 第二个shell 几乎不会显示(很少会反复尝试才能工作)。显然,emacs从读取第一个shell的输出到侦听来自任何其他进程的输出不会中断。当有多个进程具有待处理的输出时,对它进行循环将是更好的行为。有什么办法可以取得更好的行为? 我知道的唯一技巧是使shell缓冲自己的进程,但是不幸的是,这对我不起作用。即使这样做,我也必须运行一个子进程来侦听套接字,以使我的语音识别软件正常工作,以便我实际上可以首先控制外壳,这就是我发现这一点的方式;像上面那样运行无限循环,可以防止从套接字中取出任何数据。

3
Windows上的Emacs中的Git Bash
我可以运行Windows版Git随附的Bash shell。我把这个放在我的.emacs: (defun git-bash () (interactive) (let ((explicit-shell-file-name "D:/Program Files/git/bin/bash")) (call-interactively 'shell))) 然后M-x git-bash瞧,bash正在运行,但有些怪异: bash: cannot set terminal process group (-1): Inappropriate ioctl for device bash: no job control in this shell ^[]0;MINGW64:/c/Users/M??rton^G MĂĄrton@Marci MINGW64 /c/Users/MĂĄrton $ 并^[]在我运行的每条命令后打印该行,从开始。编码也搞砸了。我该如何解决.emacs?

3
有什么方法可以使提示和先前输出在shell / term-mode下不可编辑?
诚然,这是一个肤浅的问题。 尽管ansi-term在我第一次打开它时开始表现正确,但是在执行一些命令后,它似乎会降级为“可编辑”模式,例如,当我执行C-a(行首)后紧接着是C-k(杀死行)时,它会清除整个提示。 出于我的审美习惯,是否有任何方法可以使提示和以前的输出不可编辑(用于shell)?(鉴于有意义的差异,已更新以排除ansi-term。) 我在Emacs 24.4中使用zsh;通过Virtual Box的操作系统是LXDE(Ubuntu 14.04)。 (理想情况下,我仍然可以移动光标...)

4
如何使用Shell配置文件和当前目录挂钩(例如direnv)使shell命令运行
我正在尝试获取shell-command并async-shell-command与.bashrc文件中的几个程序无缝集成,在此示例中特别是direnv。 我发现,如果我进行了自定义shell-command-switch,则可以使外壳程序进程像常规的交互式登录外壳程序一样加载我的配置文件: (setq shell-command-switch(纯副本“ -ic”)) (setqexplicit-bash-args'(“ -ic”“ export EMACS =; stty echo; bash”)) 我也在使用exec-path-from-shell。 说我有一个~/.bashrc文件: ... 评估“ $(direnv hook $ 0)” 回声“ foo” 里面~/code/foo我有一个.envrc文件: 导出PATH = $ PWD / bin:$ PATH 回声“栏” 如果我运行M-x shell与default-directory设置为~/code/foo,是bash shell会正确加载我的个人资料和运行direnv钩到添加到我的路径: direnv:加载.envrc 酒吧 direnv:导出〜PATH 〜/ code / foo $ echo $ PATH /用户/用户名/代码/ foo / bin:/ …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.