2009-09-28 25 views
0

我刚刚开始使用Solaris 10(Sparc)盒,在这里我远程登录并遇到非常不友好的界面(与我在cygwin或linux中使用的标准bash shell相比)---箭头键不工作,因为我期望他们。作为一个NIS系统,更改shell并不像使用“chsh”命令那么简单。并且将〜/ .login和〜/ .profile中的SHELL环境变量设置为不适用于我。所以我想我可能需要编写一个脚本来确定bash是否正在运行脚本,如果答案是否定的,则开始bash。我的第一次尝试,试图从〜/ .profile调用/ bin/bash似乎工作,但有点不舒服。其他建议?我该如何通过编程方式告诉哪个shell实际执行?需要编写一个程序来正确配置登录shell

回答

0

你可以通过echo $0来判断shell运行的是什么。例如:

$ echo $0 
-bash      

如果你改变了你可能要替换当前的shell进程,而不是成为它的孩子,所以使用exec外壳。

另外,你想pass bash the -l flag so it acts as if it has been called as part of the login process

所以你会希望是这样的:

exec bash -l 
+0

对“exec bash -l”+1,但如何防止递归?这是我写的: ... if [“$ 0”!=“-bash”];然后 回声启动bash ... exec bash -l fi 当我运行它时,它会继续产生新的bash进程。 :-( – pajato0 2009-09-28 15:25:25

+0

对不起,上一条评论中显示的压缩脚本实际代码格式正确 – pajato0 2009-09-28 15:27:10

+1

如果如果$ bash不是登录shell,则返回“bash”如果尝试: if [“$ 0”!=“ -bash“-a”$ 0“!=”bash“];然后 – 2009-09-28 16:12:00

0

你可能有ksh(1)在Solaris上运行。你有几个选择,请阅读ksh的联机帮助页并配置它,或者安装另一个你更熟悉的shell,比如bash。我会personnaly推荐zsh。

+0

我喜欢你关于安装另一个shell的建议我更熟悉Bash会很好,在NIS环境下如何做到这一点? – pajato0 2009-09-28 15:22:09

+0

在你的系统上查找ypchsh程序(/ usr/sbin或其他东西关闭)检查/ etc/shells中的有效shell并使用ypchsh将你的登录shell更改为bash如果bash不在这里,请安装(或者让你的管理员去做) 作为最后的手段,您可以在您的$ HOME/bin中编译和安装bash,并在.profile中使用“exec $ HOME/bin/bash”... – Keltia 2009-09-29 09:47:09

相关问题