【发布时间】:2015-07-07 18:38:46
【问题描述】:
tcsh 中是否有命令可以获取最后输入到 shell 的命令?
问题是当我将 shell 从 bash 切换到 tcsh 时,最后一个命令将是来自 bash shell 的“tcsh”。我需要某种shell间通信来做到这一点吗?我可以尝试阅读我的 bash 历史记录中的最后一行,这会起作用……我想……也许有时?
问题来了:
我想制作我的默认 shell bash。目前是 tcsh。我没有管理员权限,但我可以修改我的 rc 文件。现在我可以通过从我的 .tcshrc 文件中放置“bash”或“exec bash”来解决问题。但是,这显然会阻止我使用 tcsh,因为如果我尝试它会运行 rc 文件并切换回 bash。
这是我的想法:
如果最后一个命令是“tcsh”,则将 if 语句写入我的 .cshrc 文件以跳过 bash 命令。
它应该看起来像这样:
if ( STATEMENT HERE ) then
bash
endif
当最后一个进入 shell 的命令是“tcsh”时,“STATEMENT HERE”应该是假的。
【问题讨论】:
-
即使没有 root 权限,您仍然应该能够运行
chsh来更改您的默认 shell。 -
使用您在启动
bash之前设置的环境变量来指示您是否已经自动启动bash。 -
运行 chsh 是我在尝试时在网上找到的另一个建议,它说我必须使用“ypchsh”......所以我尝试了这个并输入了我的密码,它说“登录 shell 已更改”。然后我关闭终端窗口并打开另一个窗口,遗憾的是它仍然以 tcsh 的形式打开。也许我需要一些标志或选项?我从其他在线建议中绑定的所有选项都会导致错误。我只是在阅读有关此的更多信息,也许它有效,我必须注销并重新登录...我会尝试的。
-
我可以创建一个环境变量。我喜欢。这会让我到一个更好的地方。然而,我希望最终能够在不设置环境变量的情况下做到这一点。
-
您是否尝试过要求管理员更改您的登录 shell?
标签: linux bash shell scripting tcsh