【问题标题】:Command 'which perl' only displays after exit from bash命令“which perl”仅在退出 bash 后显示
【发布时间】:2014-05-20 17:23:56
【问题描述】:

好吧,我又来回答一个简单的问题了……

Unix 风格:SunOS devsrv2 5.10 Generic_147148-26 i86pc i386 i86pc

在我的工作环境中,我登录到一个 tsch shell...登录后,我输入“bash”,它会将我放入一个 bash shell(我更喜欢)。

因此,我不必总是输入“bash”,而是创建了一个 .cshrc 脚本,其中包含一行:

#.cshrc
bash

注销并重新登录后,我直接进入 bash shell...

这就是问题所在...以前,当我执行登录然后键入“bash”的两步过程时,我可以键入“which perl”,然后我会得到响应“/usr/bin/perl”。 ..

现在我什么也得不到……直到我发出命令“exit”,然后出现“/usr/bin/per”文本……

所以,总结一下:

  1. 我登录
  2. 我输入“bash”
  3. 我输入“which perl”
  4. 我返回“/usr/bin/per”

当我添加 .cshrc 文件并登录时:

  1. 让我直接进入 bash
  2. 我输入“which perl”
  3. 除了命令行,我什么也得不到
  4. 我输入“退出”
  5. 我得到“/usr/bin/perl”

我感觉这与我键入 bash 时的系统设置 STDOUT 与我在 cshrc 文件中手动执行时的系统设置有关,但我不确定如何在脚本中导出它...

非常感谢任何帮助。

谢谢。

【问题讨论】:

  • 不知道你想在这里实现什么,但你可以改变你的登录外壳。也许使用chsh
  • 我正在尝试使用 bash shell 并绕过必须输入“bash”...
  • which 是否在您的系统上实现为 Csh 脚本?对应的 Bash 命令是type
  • 如果您无法更改您的外壳或让您的管理员按照@devnull 的建议为您更改它,那么也许您希望您的.cshrc 改为说exec /bin/bash... 那将替换您当前正在运行 [t]cshbash,而不是将 bash 作为被输入缓冲等混淆的子进程运行......

标签: bash shell


【解决方案1】:

您不想手动更改您的外壳...在您进入外壳之前需要加载您可能没有考虑到的“幕后”事物...

最好的方法是让 root 用户运行命令:

usermod -s /usr/bin/bash userfoo #user: userfoo

这将正确设置您的环境,为您节省大量时间和精力。

【讨论】:

  • 您通常可以使用chsh 自己执行此操作,无需管理员。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-02-27
  • 1970-01-01
  • 2011-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多