相关疑难解决方法(0)

如何检查 shell 是否是登录/交互式/批处理

我想我了解交互式、登录和批处理 shell 之间的区别。请参阅以下链接以获取更多帮助:

我的问题是,如果我在交互式、登录或批处理 shell 上,如何使用命令/条件进行测试?

我正在寻找一个命令或条件(返回truefalse),我也可以放在 if 语句中。例如:

if [[ condition ]]
   echo "This is a login shell"
fi
Run Code Online (Sandbox Code Playgroud)

shell

182
推荐指数
9
解决办法
11万
查看次数

交互式 shell、登录 shell、非登录 shell 及其用例之间有什么区别?

可能的重复:
登录 Shell 和非登录 Shell 之间的区别?

我一直在查看 /etc/profile。bash.bashrc 以查看它们是如何运行的,并注意一些是由非登录 shell 执行的,一些与交互式 shell 一起工作等。

这种类型的外壳有什么区别,即交互式和非交互式、登录和非登录等?

这个问题可能非常基本,但似乎我首先需要问什么是 shell。什么是 shell,它的相关性是什么,你如何使用它,以及它为什么存在?

更新:为了更好地理解问题的意图,除了定义之外,我还需要了解一种外壳或另一种外壳的用例。帮助理解的是用例,而不仅仅是字典定义。

shell bashrc

95
推荐指数
2
解决办法
7万
查看次数

使 zsh 成为没有 root 访问权限的默认 shell

我用我的学校的电脑,并想用zsh代替bash。我想将其设为默认 shell,但我无法运行命令,例如$ chsh -s $(which zsh)因为我没有管理员权限。

有没有办法可以将某些内容放入我的内容中.bashrczsh在打开时自动调用的内容作为解决方法?

澄清一下,zsh已经安装了。

bash login zsh profile

67
推荐指数
2
解决办法
9万
查看次数

为什么默认情况下 OSX 登录 shell 上有交互式 shell?

在 Linux 中,据我所知,在所有 Unix 系统中,终端模拟器默认运行交互式、非登录 shell。这意味着,对于 bash,启动的 shell 将:

当启动非登录 shell 的交互式 shell 时,bash 会从/etc/bash.bashrc和读取并执行命令~/.bashrc(如果这些文件存在)。这可以通过使用--norc 选项来禁止 。

--rcfile 文件选项将强制bash读取和文件,而不是执行命令/etc/bash.bashrc~/.bashrc

对于登录 shell:

当 bash 作为交互式登录 shell 或作为具有--login选项的非交互式 shell 调用时,它首先从文件中读取并执行命令/etc/profile(如果该文件存在)。读取该文件后,它会按该顺序查找~/.bash_profile~/.bash_login、 和~/.profile,并从第一个存在且可读的命令中读取和执行命令。

--noprofile当 shell 启动时可以使用该选项来禁止这种行为。

在OSX上,但是,默认壳(这是bash)的开始在缺省终端(Terminal.app)实际上源~/.bash_profile~.profile等等。换句话说,它的作用就像一个登录shell。

主要问题:为什么默认的交互式 shell 是 OSX 上的登录 shell?为什么 OSX 选择这样做?这意味着所有提及更改内容的基于 shell 的内容的说明/教程~/.bashrc在 OSX 上都将失败,反之亦然~/.profile。尽管如此,尽管可以对 Apple 提出许多指控,但雇用无能或愚蠢的开发人员并不是其中之一。据推测,他们有充分的理由这样做,那为什么呢?

子问题:Terminal.app 是否真的运行了一个交互式登录 shell …

osx bash

50
推荐指数
3
解决办法
2万
查看次数

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

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

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

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

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

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

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

shell login terminology unix-philosophy

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

如何将 sudo 设置为不更改 Ubuntu 中的 $HOME 以及如何禁用此行为?

在 Ubuntu 12.04 上,当我sudo -s的 $HOME 变量没有改变时,如果我的普通用户是regularuser,情况是这样的:

$ cd
$ pwd
/home/regularuser
$ sudo -s
# cd
# pwd
/home/regularuser
Run Code Online (Sandbox Code Playgroud)

我很久以前就放弃了 Ubuntu,所以我不能确定,但​​我认为这是默认行为。所以,我的问题是:

一季度。这是怎么做的?配置在哪里?

Q2。如何禁用它?

编辑: 感谢您的回答,这使事情澄清了一点,但我想我必须添加几个问题,以获得我正在寻找的答案。

Q3。在 Debian 中sudo -s,将 $HOME 变量更改为/root. 从我从答案中得到的信息和man sudoshell 运行的sudo -s是 中给出的那个/etc/passwd,对吗?

第 4 季度。但是,在 Ubuntu 和 Debian 上,/etc/passwd为 root提供的 shell都是/bin/bash. 在任一系统中,就 $HOME 而言,我找不到.profile.bashrc文件的差异在哪里,因此行为sudo -s不同。这有什么帮助吗?

ubuntu sudo environment-variables

45
推荐指数
3
解决办法
4万
查看次数

为什么我的 ~/.bash_profile 不起作用?

我正在使用 Linux Mint。我的登录 shell ( cat /etc/passwd | grep myUserName) 是 bash。

在我启动我的图形桌面环境并从中运行终端模拟器后,我可以看到它.bash_profile没有来源(其中exported 的环境变量未设置)。但是,如果我从一个文本控制台登录(ctrl+ alt+ F1)或手动运行bash -l从终端仿真器,.bash_profile工作正常。

当我认为.bash_profile应该在 X 启动时获取并且所有export'ed vars 应该在终端中可用,从 X 运行时,我错了吗?

PS 将所有内容放入.bashrc并从中采购.bash_profile并不是一个好主意(/sf/ask/63206251/):环境的东西应该只采购一次。

shell bash login profile

44
推荐指数
2
解决办法
10万
查看次数

如何通过 SSH 进入特定目录?

我经常登录到服务器,然后 cd 进入特定目录。是否可以将这两个命令简化为一个?

ssh bob@foo  
cd /home/guest
Run Code Online (Sandbox Code Playgroud)

如果可能,我想避免更改 'foo' 上的任何内容,因为我必须与服务器管理员一起清除它。我使用 bash,但我愿意接受其他 shell 中的答案。

bash ssh

43
推荐指数
3
解决办法
5万
查看次数

设置环境变量的最佳发行版/外壳不可知方式是什么?

问题说明了一切。我目前使用 Arch Linux 和 zsh,但我想要一个(至少)既适用于 VT 又适用于 xterm 的解决方案,并且(希望最好)在我切换发行版或 shell 时仍能继续工作。

我在不同发行版的文档中听到了对这个问题截然不同的答案。Ubuntu 说“使用 .pam_environment”。我认为在 Arch 中,他们推荐的内容取决于您的外壳。目前,我将所有内容都放在.profile 中,如果由于某种原因 shell 没有提供它(例如,如果 .bash_profile 存在则为 bash),我会通过手动获取它来覆盖它。但似乎必须有更好的方法。

shell login environment-variables

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

登录/非登录和交互式/非交互式 shell

登录/非登录 shell 的概念与非交互式/交互式 shell 的概念(分别)相同吗?

或者概念正交产生四种不同的组合?

我想获得其清晰的画面.bashrc.bash_profile脚本获得各种情况下采购的,我发现,文章有时可以互换使用这些概念。

shell bash

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