如何让.profile文件在Solaris机器上运行?

时间:2014-02-27 19:46:37

标签: shell solaris .profile

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

默认是我不想要的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仍然被列为我的shell。我退出了,重新登录,现在我得到了:

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

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

我的最终目标是让这个环境达到我可以高效运作的程度。我已经习惯了BASH,我有Tab-completions,up-arrow for history等等,这个Bourne shell没有任何东西,它让我感到沮丧。

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

2 个答案:

答案 0 :(得分:1)

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

另一方面, bash是默认Solaris 10安装的一部分。它应该已经显示为/bin/bash(实际为/usr/bin/bash,但/bin无论如何都是/usr/bin的符号链接。

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

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

或者,您可以在.profile的末尾使用该hack:

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

答案 1 :(得分:0)

按优先顺序降序

  1. 要求sysadmin安装bash并更新/ etc / shells并更新您的登录shell
  2. 查看是否安装了允许您更改自己的登录shell的chsh程序
  3. 要求sysadmin将您的登录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