.profile ファイルを Solaris マシンで動作させるにはどうすればよいですか?
質問
これには 2 日間私はイライラしていましたが、これは非常に単純なことのように思えます。Solaris マシンでアカウントを作成したところです。Sun OS 5.10だと思います。
デフォルトは Bourne シェルですが、これは望ましくありません。私はやった cat /etc/shells
その結果、次のような結果が得られます。
/bin/sh
/sbin/sh
/bin/ksh
/usr/bin/ksh
使えるのはKornシェルだけのようです。
私が作成したのは、 .profile
ファイルを作成し、次のように書きました。
export SHELL=/usr/bin/ksh
それから私はやった env
そしてそれは次のようになります /bin/sh
はまだ私のシェルとしてリストされています。ログオフして再度ログオンすると、次のメッセージが表示されます。
-sh: SHELL=/usr/bin/ksh: is not an identifier
追加してみました #!/usr/bin/ksh
の初めに .profile
. 。それはうまくいきませんでした。末尾にセミコロンを追加してみました export
. 。それはうまくいきませんでした。私はもう試した: SHELL=/bin/ksh
それもうまくいきませんでした。
私の最終目標は、この環境を生産的に運用できるレベルまで引き上げることです。私は、タブ補完や履歴の上矢印などがある BASH には慣れていますが、この Bourne シェルにはそのような機能がなく、果てしなくイライラします。
これは簡単なはずだとわかっていますが、グーグル検索はすべて役に立ちません。誰か助けてくれませんか?
解決
/etc/shells
は標準の Solaris ファイルではないため、その内容に依存しないでください。
一方で、 bash
は、デフォルトの Solaris 10 インストールの一部です。すでに次のように存在しているはずです /bin/bash
(/usr/bin/bash
実際にはだけど /bin
へのシンボリックリンクです /usr/bin
ともかく)。
もし bash
が存在しない場合は、管理者にインストールするように依頼してください。 SUNWbash
からのパッケージ Solaris_10/Product
インストールメディア内のディレクトリ。
次に、シェルを更新するには、アカウントに定義されているシェルを更新するのが通常の方法です。ローカルの場合は、それが最後のフィールドになります。 /etc/passwd
エントリ。
あるいは、.profile の最後でそのハックを使用することもできます。
[ ! "$BASH_VERSION" -a -x /bin/bash ] && SHELL=/bin/bash exec /bin/bash
他のヒント
優先順位
の降順で- SysadminにBashとUpdate / etc / Shellsをインストールして、ログインシェル を更新します。
-
chsh
プログラムがインストールされているかどうかを確認してください。 - ログインシェルを/ usr / bin / ksh に変更するようにsysadminに尋ねてください。
-
あなたの〜/ .profile:
if type [[ >/dev/null; then : # this is ksh else # not ksh export SHELL; SHELL=/usr/bin/ksh exec $SHELL fi