/etc/passwd
アクセス権やその他の権限なしで自分のユーザーにSolaris / SunOSでシェルを設定するにはどうすればよいですかsu
?
その後、相互作用ssh
(1)とssh
コマンド転送(2)が機能するはずです。
uname -a
説明するSunOS ... 5.10 Generic_148889-04 i86pc i386 i86pc
コメントと回答に答えるには編集してください。
chsh
いいえ
私はこれを行うことはできません/usr/bin/passwd -e
。許可が拒否されました。
デフォルトのシェルはbashです。私はzshが欲しい。
SHELL
環境変数を手動で設定し、ファイルからシェルを手動で起動しようとしましたが、.profile
機能しません。2番目のケース(2):ssh user@host command
bashで実行されますcommand
。
これはログイン時に私が好むシェルを得るよりも副次的なものなので、回避策は確かに言及する価値があります。ただ私がこの質問をする目的は正しい方法を見つけることです。一人のユーザーにしか関係がないので、SAが介入されなくても可能だと思っていましたが、今はよくわかりません。 (しかし、問題(1)と(2)を解決する解決策は明らかに素晴らしいでしょう。)
答え1
方法#1:一緒にchsh
通常、このコマンドを使用してchsh
アクセスなしでシェルを変更できます/etc/passwd
。ファイルには通常、デフォルトのシェルがリストされます。
saml:x:500:501:Sam M. (local):/home/saml:/bin/zsh
一般ユーザーは自分のアカウントのログインシェルのみを変更でき、rootユーザーのスーパーユーザーはすべてのアカウントのログインシェルを変更できます。次のコマンドを使用して、システムで使用可能なシェルを表示できます。
$ chsh --list-shells
/bin/sh
/bin/bash
/sbin/nologin
/bin/dash
/bin/tcsh
/bin/csh
/bin/zsh
シェルを変更するには、次のコマンドを使用できます。
$ chsh -s /bin/zsh saml
Changing shell for saml.
Password:
Shell changed.
ファイルを見る効果は明らかです/etc/passwd
。
$ grep saml /etc/passwd
saml:x:500:501:Sam M. (local):/home/saml:/bin/zsh
変更はすぐには表示されません。表示するにはログアウト/ログインする必要があります。
[saml@grinchy]~% echo $SHELL
/bin/zsh
方法#2:/usr/bin/passwd -e
Solaris には存在しない対応するコマンドへのアクセス権がなく、chsh
変更できるルートアクセス権もない場合/etc/passwd
でも、次のコマンドを使用して同じ操作を実行できます。
$ /usr/bin/passwd -e
方法#3:手動設定方法
上記のオプションのいずれもオプションでない場合、デフォルトでは最後のオプションが残ります。これは、既存のシェルのログインファイルに次のいずれかのオプションを追加することです。
デフォルトシェル:/bin/cshまたは/bin/tcsh
次の行を追加します
$HOME/.login
。setenv SHELL=/bin/bash exec $SHELL
基本シェル: /bin/bash
以下を追加してください
$HOME/.bash_profile
。export SHELL=/bin/zsh exec $SHELL
上記で考慮する必要がある他のもの/bin/bash
(たとえば、設定する前に現在$ SHELLがすでに存在していることを確認することでより完璧にすることができます)、そうであれば何もしないでくださいexec $SHELL
。
引用する
答え2
ヒントがSHELL=newshell; exec "$SHELL"
取り上げられました。
SSH経由でコマンドを実行して新しいシェルを使用したい場合。現在のログインシェルがある場合は、bash
次のエントリに追加できます~/.bashrc
。
if [ -n "$BASH_EXECUTION_STRING" ]; then
export SHELL=/bin/zsh
exec "$SHELL" -c "$BASH_EXECUTION_STRING"
fi
起動するたびに、something
新しいシェルを使用して実行されます。bash
bash -c something
そしてそれは言う~/.bashrc
。
シェルの先頭はbash -c something
通常読み込まれません~/.bashrc
。 1つの例外は、orまたはonbash
で呼び出される場合です。sshd
rshd
bash -ic something
[ -n "$SSH_CONNECTION" ]
事件費用のみを支払う場合は、小切手を追加できますssh
。
答え3
通常のSolarisインストールではこれを行うことはできません。簡単な回避策は、構成ファイルを変更して目的のシェルを実行することです。
たとえば、/etc/passwd
シェルが/bin/bash
次を好むとします/bin/ksh
。
$ tail -2 ~/.bash_profile
export SHELL=/bin/ksh
exec $SHELL
太田や虚偽実行、無限ループに陥るロジックのため慌てないように注意してください。