ログインシェルをどのように再登録しますか?

ログインシェルをどのように再登録しますか?

私は、Linuxを実行している大規模な国家バイオインフォマティクスコンピューティングファームのフロントエンドノードであるマルチユーザーログインノードを使用しています。多くのユーザーがログインノードで誤った行動を起こし、計算集約的なタスクを実行しました。私はそうではありません。私は良い人になりたいです。実際、私はログインシェルをデフォルトのゼロ(ゼロ)ではなく良いレベル4で実行したいと思います。

シェルに再度ログインする最も便利で素朴な方法は何ですか?

私の現在の設定:

tmux1つ以上のセッションでast-ksh(KornShell 93)を実行しています。システムのデフォルトのシェルですが、bash実行中のセッションexec -l ksh93~/.bash_profile再接続するか、セッションがない場合は新しいセッションを作成します。tmux~/.profile

出典:スティックを持っていても~/.bash_profile触れたくないので、私が一番好きなシェルだけを持ちたいです。このシステムでデフォルトのシェルを変更するのは簡単ではありません...bashexec

if [ -f $HOME/sw/bin/ksh93 ]; then
    exec -l $HOME/sw/bin/ksh93
fi

抜粋~/.profile:すでにセッションに存在するかどうかを検出し、tmuxそうでない場合はSSHを介してログインすると、セッションが接続または生成されます。

if [[ -z $TMUX ]]; then
    ssh-add

    if [[ -n $SSH_TTY ]]; then
        if tmux has-session 2>/dev/null; then
            exec tmux attach-session
        else
            exec tmux
        fi
    fi
fi

次のスニペット~/.tmux.conf:

set -g default-shell "$HOME/sw/bin/ksh93"

どこでksh93、どうやって諦めるべきですか?

答え1

~/.bash_profile次のように修正すれば十分です。

if [ -f /bin/ksh93 ]
then
    renice -n 4 $$
    exec -l /bin/ksh93
fi

renice -n 4 $$現在のシェル()のNiceness値を4に設定すると、$$そのシェルで実行される後続のコマンドは同じNiceness値を継承します。

tmuxセッションでテストしていませんが、tmuxセッションなしでログインすると期待どおりに機能します。

$ su - testuser  ## whose ~/.bash_profile contains the lines above
$ ps -eo "%p %y %x %c %n" | grep ksh
16894 pts/9    00:00:00 ksh93             4 #<-- the nice value

関連情報