这已经让我郁闷了两天了,看来这应该是一件很简单的事情。我刚刚在 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,其中有制表符补全、历史记录向上箭头等功能,而这个 Bourne shell 没有这些功能,这让我非常沮丧。

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

有帮助吗?

解决方案

/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. 要求系统管理员安装 bash 并更新 /etc/shells 并更新您的登录 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
    
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top