新しいユーザーのタブのオートコンプリート


11

私は新しいLinuxユーザーを追加して

useradd -d /var/www/mywebsite.com -m newuser
passwd newuser

次のコマンドでサーバーにログインしてアカウントをテストしました

ssh newuser@mywebsite.com

ログイン後、シェルではタブのオートコンプリートを実行できません。たとえば、/ var / www / myweb {tab}と入力しますが、タブボタンはシェルにスペースを入れるだけです。また、上下の矢印キーを押しても、入力された最新のシェルコマンドは表示されません。

rootとしてsshログインすると、すべてが完璧に機能します。しかし、newuserとしてsshログインすると機能しません。

私は何か見落としてますか?

ありがとう

回答:


33

シェル「newuser」が使用しているものを確認してください。それが実際にタブ補完をサポートするものであることを確認してください(bashやzshなど)。

次のコマンドを使用して、ユーザーが使用しているシェルを確認できます

# getent passwd rodjek
rodjek:x:1001:1001:x:/home/rodjek:/bin/zsh

chshコマンドを使用してユーザーシェルを変更できます。

# chsh -s /bin/bash rodjek

それはうまくいきました!
ジョン

2

私のシステムタブでは、オートコンプリートは以下によって追加されます:

if [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
fi

.bashrc内。Bashrcは/ etc / skelに存在しないため、新しいユーザー用に作成されません。上記のコードを使用して/ etc / skelに.bashrcを作成します。これは新しいユーザーでも機能します。次に、作成したばかりの新しいユーザーにファイルをコピーして、ユーザーにも機能するようにします。


1

新しいユーザーがrootユーザーと同じシェルを持っていることを確認しましたか?rootユーザーはあなたのようなものをbashしていて、新しいユーザーはkshまたはそれに似たものを持っているようです。/ etc / passwdファイルまたはSHELL環境変数を確認します。


1

ユーザーを追加するuseraddと、特別なシェルは追加されません。
次のコマンドで確認できます。cat /etc/passwd

test1:x:1004:1005:,,,:/home/test1:/bin/bash
test3:x:1007:1008::/home/test3:

ユーザーtest1がシェルを持っている/bin/bashが、ユーザーtest3はシェルを追加していないことがわかります。

これを修正するには、次のtest3コマンドでユーザーのシェルを変更できます。

chsh -s /bin/bash test3

または、新しいユーザーを作成するときに、sオプションを使用できます。

useradd -s /bin/bash test4

0

アカウントを作成する前に、/ var / www / mywebsite.comフォルダーが存在しましたか?

/ etc / skelのコンテンツがホームディレクトリ/var/www/mywebsite.comにコピーされていることを確認できますか?

新しいアカウントは、オートコンプリートをサポートしない別のシェルを取得しましたか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.