我需要更改正在登录的用户的问候语。所以我修改了文件/etc/profile
。在这个问候语中我需要知道,该用户使用哪个shell并告诉用户。问题是我在zsh
或csh
更改我的shell它不起作用。即使我只输入此文件echo $SHELL
,它也什么都不做。我认为,当我使用csh
和zsh
时,此文件(/etc/profile
)根本不会运行。我该如何解决这个问题?
谢谢你,抱歉我的英语)
答案 0 :(得分:5)
您应首先阅读系统中每个shell的联机帮助页。
有各种口味的贝壳。每种口味使用略有不同(每个会话和每个shell,每个站点和每个用户)初始化文件。例如:
sh
(和bash
)使用/etc/profile
和~/.profile
bash
也使用~/.bash_profile
,~/.bashrc
,~/.bash_logout
csh
使用/etc/.login
和~/.cshrc
等...
以上列表并非详尽无遗。这是为了说明您需要检查系统上使用的每个shell的确切行为并对其进行适当配置。
您还需要考虑是否要更改系统范围的行为(对应于/etc
下的初始化文件)或用户特定的行为(对应于用户主目录中的初始化文件)。
对于某些shell,还有每个会话(即每次登录一次)和每个shell设置(例如,对于每个终端窗口)。一个很好的例子是~/.bash_login
(每次登录执行一次)和~/.bashrc
(为每个shell执行 - 例如终端窗口)。
答案 1 :(得分:2)
他们都执行不同的文件:
来自zsh http://zsh.sourceforge.net/Guide/zshguide02.html
现在,这里是启动文件的列表以及它们何时运行。你' 11 看到它们分为两类:/ etc目录中的那些类 由系统管理员放在那里,并为所有用户运行,和 那些在你的主目录中,与许多shell一样,zsh允许你 缩写为“〜'。
/etc/zshenv
Always run for every zsh.
~/.zshenv
Usually run for every zsh (see below).
/etc/zprofile
Run for login shells.
~/.zprofile
Run for login shells.
/etc/zshrc
Run for interactive shells.
~/.zshrc
Run for interactive shells.
/etc/zlogin
Run for login shells.
~/.zlogin
表示csh http://unixhelp.ed.ac.uk/CGI/man-cgi?csh+1
登录shell首先执行系统文件中的命令 /etc/csh.cshrc和/etc/csh.login。
您可以建立一个指向同一文件的软链接:
ln -s /etc/profile /etc/zshenv
ln -s /etc/profile /etc/csh.login
答案 2 :(得分:0)
我修改了我的etc / profile文件,以便在启动时启动python脚本。现在我的程序正在运行,但是有一个黑屏,因为我的程序有一段时间的True循环,现在我无法阻止它。请告诉我如何停止程序,我尝试过ctrl + C但没有发生任何事情。