DUK*_*UKE 86 command-line bash login .profile
据说非登录shell的设置进入.bashrc文件和登录shell设置进入.profile文件。
登录和非登录 shell 的真正含义是什么?
请尽量不使用技术术语进行解释。
ish*_*ish 94
如果您是 Ubuntu Desktop 的普通用户,那么唯一的登录 shell 就是……您的桌面(您输入密码才能进入,对吧;)?嗯,从技术上讲,它是一个启动 GUI 的登录 shell,但这已经成为行话了。是的,它会读取设置.profile
只有你(普通用户)时可能会看到一个登录外壳,看起来像一个登录shell是,如果你有一些问题与您的桌面,并切换到同一个虚拟终端Ctrl+ Alt+F1快捷键。
ssh(或本地连接ssh localhost)远程访问您的计算机bash -l(或sh -l)模拟初始登录shellroot登录 shellsudo -i
sudo -u username -irootroot使用(和他们的密码)作为另一个非用户进行身份验证su - usernamesudo login命令切换用户小智 11
我不认为没有“技术术语”就可以给出正确的答案。由于这个问题是第一个在 Google 中针对“什么是登录 shell”弹出的问题,因此我在下面提供了更正确的答案:
登录外壳只是一个被告知是登录外壳的外壳。它不平均壳你登录后弹出,虽然平时应用程序日志,你告诉壳它启动是一个登录shell。存在以下方法来告诉 shell 它应该是登录的:
-l或--login参数运行 shell假设它知道它(我不知道任何不知道的 shell -l,但--login只有少数 shell 支持)。argv[0]set to运行 shell -{some_string}(即在通常argv[0]或其他字符串前加上连字符减号)。这就是 ssh 和 su 所做的: su 只是使用-suas运行可执行文件argv[0](你好,每个人都认为argv[0]与当前运行的可执行文件名称有关),-zsh当用户设置/bin/zsh为他的 shell时,ssh 运行 zsh 。shell 的登录与任何询问您密码或执行其他身份验证程序的人完全无关。一些程序,如 ssh 或 login(或一些终端模拟器,如 urxvt)使用argv[0]以连字符-减号开头的登录程序运行 shell 。有些像 su 或 sudo(或 zsh:请参阅 中的-预命令修饰符部分中描述的预命令修饰符man zshmisc)默认情况下不执行此操作,但可以被告知。有些人唯一的选择是使用它的参数(即bash -l)告诉 shell 作为登录者:ssh 和一个命令参数(明确告诉 ssh 在远程端运行什么)。
一般来说,最好先查阅用于调用 shell 的程序的文档以确定 shell 是否将成为登录名,然后执行一些测试以确定应用程序是否会启动登录 shell(例如通过添加echo到.profile)。
| 归档时间: |
|
| 查看次数: |
67277 次 |
| 最近记录: |