私はCygwinをかなり長い間使用しています。バッシュからフィッシュに切り替えたいと思います。誰もがchsh -s /usr/bin/fish
を使うべきだと言っていますが、どういうわけか、chsh
は私にはうまくいきません。 Cygwin.bat
ファイルを変更しようとしても機能せず、/etc/passwd
ファイルも変更できません。
何が起こっているのか本当にわかりません。誰か助けてくれませんか?
私はランダムに同じ問題に遭遇します、そして今私はあなたに私の解決策を提供します。
0- cygwin
をmintty.exe
で開きます
1-passwdファイルを手動で作成します(mkpasswd
)
$mkpasswd > /etc/passwd
2-passwdファイルのデフォルトシェルを変更します
$vim /etc/passwd
user:*:1976XX:1971XX:U-user\user,S-1-5-21-XXXX:/home/user:/bin/fish
3-再起動mintty.exe
Cygwin 推奨 であるpasswdファイルを作成する代わりに1、可能性があります / etc/nsswitch.confを編集 。次の行を追加または編集します。
db_Shell:/ usr/bin/fish
この方法の欠点は、複数のユーザーがいる場合、この変更がすべてのユーザーに影響することです。良い面/良い面は、それが非常に単純であるということです。唯一の問題は、Cygwinを再起動する必要があることです。
この変更後にdomkpasswd
を使用すると、ログオンが許可されているすべてのユーザーに対して新しいデフォルトのシェルが使用されます。
1mkpasswd
ドキュメントには次のように書かれています。
本当に必要な場合を除いて、このコマンドを使用してローカルの/ etc/passwdファイルを生成しないでください。詳細については、Cygwinユーザーガイドを参照してください。
ユーザーガイド には、ユーザーとグループの場合は/etc/passwd
ファイルと/etc/group
ファイルを再生成する必要があるという言及以外に確かな理由は見つかりません。変化、それはまともな十分な理由だと思います。このプロセスは、初心者にとっては多少エラーが発生しやすいと言えます。
SuperUser には、さらに簡単な答えがあります。 Windowsでシェル環境変数を設定します。好みのシェルに設定します(例:/bin/tcsh
)および新しく起動されたシェルはそれを使用する必要があります。
環境変数を設定するには:
Cygwinを実行している場合ConEm最も簡単な方法は、デフォルトのシェルの代わりにコマンドラインを置き換えてfishを実行することです(Settings-> Startup-> Tasks):""c:\cygwin64\bin\fish.exe" --login -i"
(それに応じてcygwinフォルダーへのパスを変更してください)
受け入れられた回答についてコメントしたかったのですが、担当者が足りませんでした。
この方法について
$ mkpasswd > /etc/passwd
これは/ etc/passwdファイルを生成するために機能しますが、cygwinを自分でインストールしている可能性があり、コンピューターがドメインに属している場合、mkpasswdが不足し、ドメインユーザーリスト全体を消費しようとする可能性があります。まさにこの状態の500MB以上の/ etc/passwdファイルがあり、ファイルを削除するまでcygwinは起動しませんでした。
Mkpasswdルートを使用して-c
スイッチを使用する場合は、自分だけのエントリを入力することを強くお勧めします。
$ mkpasswd -c > /etc/passwd
共有cygwinサービスを備えたマシン(書き込み権限がある場合)
$ mkpasswd -c >> /etc/passwd
これがソリューションの「適切」であるかどうかはわかりませんが、/usr/bin/zsh; exit
ファイルの最後に.bashrc
を追加しました。選択したシェルへのパスを/usr/bin/zsh
に置き換えることができます。これまでのところ問題なく動作しているようです。
c:\cygwin
またはc:\cygwin64
(cygwinのホームディレクトリは何でも)に移動し、cygwin.bat
を編集します。の代わりに
bash --login -i
たとえば、
rem bash --login -i
tcsh -l
Cygwinのデフォルトのシェルをzshに変更しようとしていたところ、ここでの回答の一部が役に立ちましたが、完全な解決策はありませんでした。私が見つけた最良の手順は、RobbyRusselによるohmy zsh githubリポジトリの「installingzsh」手順にありました ここ
ページの上部には、zshをインストールするための一般的な手順と、さまざまなプラットフォーム向けの特定の手順があります。 Cygwinセクションまで下にスクロールして、次の手順を実行できます。
「デフォルトのシェルを変更する最も簡単な方法は、シェルのユーザー環境変数を設定することです。「アカウントの環境変数の編集」を検索して環境変数ウィンドウを表示し、「シェル」という名前の新しい変数を作成して、値を指定します。/usr/bin/zsh/"。"
(Windows 7の場合:Windowsキーを押します。「environment」の入力を開始します。表示されたら、「アカウントの環境変数の編集」を選択し、上記のように新しい変数を追加します。)
これを行った後、Cygwin Shellウィンドウを閉じて再度開き、echo $ Shellで動作することをテストしました。期待される結果:/ bin/zshまたは同様のもの。
お役に立てれば!
これを行う簡単な方法の1つは、.bashrcファイルの最後でtcshを呼び出すことです。
# x2=$(dirs +${cnt} 2>/dev/null)
# [[ $? -ne 0 ]] && return 0
# [[ ${x2:0:1} == '~' ]] && x2="${HOME}${x2:1}"
# if [[ "${x2}" == "${the_new_dir}" ]]; then
# popd -n +$cnt 2>/dev/null 1>/dev/null
# cnt=cnt-1
# fi
# done
#
# return 0
# }
#
# alias cd=cd_func
tcsh
alias g=gvim
source ~/.cshrc
source ~/.aliases