2014-02-27 46 views
1

这让我感到沮丧的两天,它似乎应该是一个非常简单的事情。我刚刚在Solaris机器上创建了一个帐户。我相信Sun OS 5.10。如何让.profile文件在Solaris机器上工作?

默认是Bourne shell,我不想要。我做了cat /etc/shells导致:

/bin/sh 
/sbin/sh 
/bin/ksh 
/usr/bin/ksh 

看起来像Korn shell的是我可以使用。

我创建了一个.profile文件,并写道:

export SHELL=/usr/bin/ksh 

然后我做了一个env,它看起来像/bin/sh仍列为我的壳。我注销,在重新登录,现在我得到:

-sh: SHELL=/usr/bin/ksh: is not an identifier 

我试着在.profile的开头添加#!/usr/bin/ksh。这没有用。我试过在export的末尾添加分号。这没有用。我试过了:SHELL=/bin/ksh,那也没用。

我的最终目标是让这个环境达到可以高效运营的地步。我习惯了BASH,我有选项卡完成,历史上的向上箭头等,这个Bourne shell没有任何这种功能,它让我感到无法接受。

我知道这一定很简单,但我所有的谷歌搜索都无济于事。有人能帮我吗?

+1

Solaris中的古老的Bourne shell不支持现代'出口FOO = bar'语法,必须用'老FOO = bar;出口FOO'风格。 – alanc

回答

1

/etc/shells不是标准的Solaris文件,你可能不应该依赖它的内容。

另一方面,bash是缺省Solaris 10安装的一部分。它应该已经存在为/bin/bash/usr/bin/bash实际上,但/bin无论如何是/usr/bin的符号链接)。

如果bash不存在,您可能需要管理员从安装介质中的Solaris_10/Product目录安装SUNWbash软件包。

然后,要更新您的shell,常规方法是让您的帐户为您的帐户定义更新。如果是本地的,那么这是/etc/passwd条目中的最后一个字段。

或者,你可能会使用黑客在您的.profile文件的末尾:

[ ! "$BASH_VERSION" -a -x /bin/bash ] && SHELL=/bin/bash exec /bin/bash 
+0

我试图导航到'/ usr/bin/bash'或'/ bin/bash',但都不存在。我将采取这个意思,我只是没有bash :(无论如何,我查了'/ etc/passwd',并且会让我的系统管理员更新我在我的帐户中拥有的shell '/ bin/ksh'而不是'/ bin/sh'。我会及时更新。 – noblerare

+0

'cat/etc/release'是什么? – jlliagre

+0

@jliagre:Solaris 10 10/09 s10s_u8wos_08a – noblerare

0

按优先

  1. 的顺序要求系统管理员安装bash和更新的/ etc /炮弹和更新您的登录shell
  2. 看是否安装了chsh程序,让你改变你自己登录shell
  3. 要求系统管理员来改变你的登录shell到/ usr/bin中/ KSH
  4. 修改你的〜/ .profile文件:

    if type [[ >/dev/null; then 
        : # this is ksh 
    else 
        # not ksh 
        export SHELL; SHELL=/usr/bin/ksh 
        exec $SHELL 
    fi 
    
相关问题