相关疑难解决方法(0)

为什么是“登录”外壳而不是“非登录”外壳?

我对*nix 系统中的dotfiles有一个基本的了解。但是我仍然对登录外壳和非登录外壳之间的区别感到很困惑

一堆不同的答案(包括多个重复)已经解决了以下要点:

  • 如何调用一个登录非登录
  • 如何检测一个登录或者非登录
  • 什么启动文件将被消耗登录或者非登录
  • man bash有关更多详细信息,请参阅文档(例如,)

答案没有告诉(以及我仍然感到困惑的事情)是:

  • 什么是用例一的登录或者非登录壳呢?(例如,我只配置zshrczsh和这足以让大多数个人开发的要求,我知道这不是这么简单什么vimrcvim

  • 非登录shell上使用登录原因是什么(除了消耗不同的启动文件和生命周期)?

shell login terminology unix-philosophy

47
推荐指数
1
解决办法
7358
查看次数

Zsh 的 SSH“未找到命令”

我在客户端和服务器上使用 Zsh。当我使用 ssh 在远程服务器上运行命令时,它找不到二进制文件:

ssh gt "cd /home/****/app/staging && bundle exec rake db:migrate RAILS_ENV=staging"
zsh:1: command not found: bundle
Run Code Online (Sandbox Code Playgroud)

如果我使用交互式 shell 进行 SSH,我可以很好地运行相同的命令。

在服务器上,$PATH在 .zshrc 和 .zshenv 中设置

编辑

它似乎bundle不在服务器上我的 $PATH 中。也许这与 RVM(Ruby 版本管理器)有关,它与 挂钩cd,因此当您cd进入包含文件的目录时.rvmrc,它会设置 Ruby 环境并添加bundle到 $PATH。我需要查明cd非交互式 shell 是否也会触发该钩子。

ssh zsh

1
推荐指数
1
解决办法
1万
查看次数

.zshenv 不是来自 ssh 登录?

根据文档

.zshenv除非设置了 -f 选项,否则源自 shell 的所有调用。它应该包含设置命令搜索路径的命令,以及其他重要的环境变量。.zshenv不应包含产生输出的命令或假设 shell 附加到 tty。

好的,很酷,所以我认为通过 ssh 登录被认为是对 zsh 的调用......但也许不是?

wayne@arglefraster ~ 
? echo $PATH                                                                                                   10:01:17
/usr/local/heroku/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
wayne@arglefraster ~ 
? zsh                                                                                                          10:01:20
e%                                                                                                                      
wayne@arglefraster ~ 
? echo $PATH                                                                                                   10:01:24
/usr/local/heroku/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/home/wayne/.rvm/bin:/home/wayne/.bin:/home/wayne/.local/bin
Run Code Online (Sandbox Code Playgroud)

那些额外的路径位被添加到我的.zshenv文件中。

这是正常的,还是我有什么奇怪的事情发生?我应该将我的 PATH 修改移到别处吗?

login ssh zsh path environment-variables

1
推荐指数
1
解决办法
4102
查看次数