Hans Asked: 2017-09-06 10:54:53 +0800 CST2017-09-06 10:54:53 +0800 CST 2017-09-06 10:54:53 +0800 CST .cshrc 或 .login 文件中的图形显示 772 我决定学习UNIX 教程只是为了更了解我的 Kubuntu,在教程的第八章中,我被建议 警告:切勿将运行图形显示的命令(例如 Web 浏览器)放入 .cshrc 或 .login 文件中。 我立即搜索了为什么我不应该这样做的信息,但是,我没有找到任何关于它的信息。 谁能告诉我在我的.cshrc或.login文件中运行图形显示有什么问题? scripts 1 个回答 Voted Best Answer Eliah Kagan 2017-09-06T17:44:18+08:002017-09-06T17:44:18+08:00 默认情况下,在 Kubuntu 中,该教程对这些特定文件的建议并不那么相关,因为您的默认 shell——当你(a)登录或(b)打开 Konsole 窗口或其他终端模拟器时获得的shell——不是' 不是一个像or的csh实现。相反,它是一个Bourne 风格的 shell。当然,您仍然可以使用类似的 shell ,尽管您必须先安装它——Ubuntu 及其官方衍生产品(例如 Kubuntu)甚至没有安装这样的 shell,尽管它们包含在官方存储库中. 如果您将命令放入或bsd-cshtcshbashtcsh.cshrc.login,您实际上不应该期望它们在您的 Kubuntu 系统中运行。您可能可以配置 KDE 来执行此操作。但是仅仅切换你的登录 shell 并不能实现这一点——从图形显示管理器登录通常不会导致 shell 喜欢tcsh运行或 C shell 配置文件被读取。 所以在你的情况下——以及绝大多数 Ubuntu 用户的情况——还有一个额外的理由来避免将运行图形程序的命令放在这些文件中。当你想要它们时,它们不会运行。但是,.profile在您的主目录中调用的文件由 Bourne 样式的 shell 运行,就像bash它们作为登录 shell 启动时一样,并且这些命令也(尽管主要是传统上)在您登录时在大多数图形桌面环境中运行。并且建议在该教程中,可以扩展到.profile任何其他文件,这些文件并非专门包含在已启动的图形会话中运行的命令。正如格伦杰克曼所说。当您不希望它们运行时,它们会运行。问题甚至比这更深一些。 首先,基础知识:如果您将运行图形程序的命令放入为所有登录 shell 运行的配置文件中,则通常会在您登录时尝试运行这些程序,即使您使用他们无法登录的方法登录也是如此跑。如果您将命令放在每次运行 shell 时都会运行的配置文件中,即使它没有作为登录 shell 运行——因为bash,.bashrc就是这样一个文件——那么它们将在你打开新 shell 时运行。想象一下,每次您打开 Konsole 选项卡时,Firefox 都会一次又一次地运行,并且每次您在虚拟控制台或通过 SSH 登录或使用或模拟登录时也会给您错误。sudo -i your-usernamesu - your-username 更深层次的问题是:如果图形会话被配置为从文件运行命令以初始化桌面会话,并且这些命令试图在其他东西设置好之前运行图形程序以便它们正常工作,你可能会得到意想不到的结果结果。如果它们运行得足够早,您会遇到与根本不是图形会话相同的问题。稍后,程序可能会在您的面板等 UI 元素启动之前启动,这会令人困惑,并且即使在一切启动后也可能会产生不正确的行为。 最新版本的 Kubuntu 使用 KDE Plasma Workspaces。如果您有图形程序要在每次以图形方式登录 Kubuntu 系统时运行,您可以转到Startup and Shutdown → Autostart并添加它们。我建议你这样做。或者,您可以手动将.desktop文件、符号链接或 shell 脚本1放入~/.config/autostart(其中~代表您的主目录),这是默认的自动启动文件夹位置。不过,复制这样的.desktop文件是图形自动启动工具所做的事情,因此大多数时候您不会通过“自己动手”获得任何好处。另请参阅KDE 文档。 1 或任何其他可执行文件,但这些是最常见的。您通常不应将程序复制到此目录中。不这样做的一个原因是,当程序更新时,您仍将运行旧的二进制文件(可能与特定于新版本的支持文件结合使用)。
默认情况下,在 Kubuntu 中,该教程对这些特定文件的建议并不那么相关,因为您的默认 shell——当你(a)登录或(b)打开 Konsole 窗口或其他终端模拟器时获得的shell——不是' 不是一个像or的
csh
实现。相反,它是一个Bourne 风格的 shell。当然,您仍然可以使用类似的 shell ,尽管您必须先安装它——Ubuntu 及其官方衍生产品(例如 Kubuntu)甚至没有安装这样的 shell,尽管它们包含在官方存储库中. 如果您将命令放入或bsd-csh
tcsh
bash
tcsh
.cshrc
.login
,您实际上不应该期望它们在您的 Kubuntu 系统中运行。您可能可以配置 KDE 来执行此操作。但是仅仅切换你的登录 shell 并不能实现这一点——从图形显示管理器登录通常不会导致 shell 喜欢tcsh
运行或 C shell 配置文件被读取。所以在你的情况下——以及绝大多数 Ubuntu 用户的情况——还有一个额外的理由来避免将运行图形程序的命令放在这些文件中。当你想要它们时,它们不会运行。但是,
.profile
在您的主目录中调用的文件由 Bourne 样式的 shell 运行,就像bash
它们作为登录 shell 启动时一样,并且这些命令也(尽管主要是传统上)在您登录时在大多数图形桌面环境中运行。并且建议在该教程中,可以扩展到.profile
任何其他文件,这些文件并非专门包含在已启动的图形会话中运行的命令。正如格伦杰克曼所说。当您不希望它们运行时,它们会运行。问题甚至比这更深一些。首先,基础知识:如果您将运行图形程序的命令放入为所有登录 shell 运行的配置文件中,则通常会在您登录时尝试运行这些程序,即使您使用他们无法登录的方法登录也是如此跑。如果您将命令放在每次运行 shell 时都会运行的配置文件中,即使它没有作为登录 shell 运行——因为
bash
,.bashrc
就是这样一个文件——那么它们将在你打开新 shell 时运行。想象一下,每次您打开 Konsole 选项卡时,Firefox 都会一次又一次地运行,并且每次您在虚拟控制台或通过 SSH 登录或使用或模拟登录时也会给您错误。sudo -i your-username
su - your-username
更深层次的问题是:如果图形会话被配置为从文件运行命令以初始化桌面会话,并且这些命令试图在其他东西设置好之前运行图形程序以便它们正常工作,你可能会得到意想不到的结果结果。如果它们运行得足够早,您会遇到与根本不是图形会话相同的问题。稍后,程序可能会在您的面板等 UI 元素启动之前启动,这会令人困惑,并且即使在一切启动后也可能会产生不正确的行为。
最新版本的 Kubuntu 使用 KDE Plasma Workspaces。如果您有图形程序要在每次以图形方式登录 Kubuntu 系统时运行,您可以转到Startup and Shutdown → Autostart并添加它们。我建议你这样做。或者,您可以手动将
.desktop
文件、符号链接或 shell 脚本1放入~/.config/autostart
(其中~
代表您的主目录),这是默认的自动启动文件夹位置。不过,复制这样的.desktop
文件是图形自动启动工具所做的事情,因此大多数时候您不会通过“自己动手”获得任何好处。另请参阅KDE 文档。1 或任何其他可执行文件,但这些是最常见的。您通常不应将程序复制到此目录中。不这样做的一个原因是,当程序更新时,您仍将运行旧的二进制文件(可能与特定于新版本的支持文件结合使用)。