web-dev-qa-db-ja.com

Mac OSX-Terminal.appを起動できませんでした-シェルに不正な値があります

タイムマシンからシステムをロールバックした後、Terminal.appを実行できません。

Mac OS Xバージョン10.6.2

次のエラーが表示されます。 「このアプリケーションを実行する権限がありません」「管理者がシェルを不正な値に設定しました」

その後、ファイル〜/ Library/Preferences /com.Apple.Terminal.plistを削除しました

ただし、同じメッセージが表示されます。

DiskUtilityを使用してすべてのシステム権限を修復しましたが、それは役に立ちませんでした。

16
chemm

この値は/bin/bashに設定されます。ここで変更するものはありません。私はこれらの設定を制御しました。すべてのシェルでこのエラーが発生します。

ついに私は解決策を見つけました。 Finderでフォルダ/etcを開きます。そこで空のファイル/private/etc/shellsを見つけました。ファイル/private/etc/shellsをバックアップファイル/private/etc/shells~origに置き換えました。

これで、/ private/etc/shellsには​​次のものが含まれます。

/bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh

(Finderにはさらに多くの手順が必要です。空のシェルファイルを削除し、情報ダイアログで権限を変更してください。)

これで、Terminal.appを/bin/bashで再度起動できます。

10
chemm

OS XLionでは再起動がその答えです。 USBまたはネットワークドライブに書き込む機能を失った場合でも、解決策は同じです。

私はこれらの迷惑な問題のいくつかを取り除くためのいくつかのSwift更新を期待しています。

10
Rune Smistad

Time Machineを復元した後も同じ問題がありました。この場合、MacBook Proのバックアップを使用してMacBookに復元しました。

Finderを使用するだけで問題を解決できました(要求されるたびにパスワードを入力してください):

  • 「移動」>「フォルダへ移動」を使用して「/ private」に移動します
  • 「etc」を選択
  • Command-Iで情報ポップアップを表示します(この手順の最後まで再度閉じないでください)。
  • 権限のロックを解除するには、右下隅にあるロック記号をクリックします
  • 「全員」の権限設定を書き留めます
  • 「全員」の権限設定をクリックし、「読み取りと書き込み」を選択します
  • 「移動」>「フォルダに移動」を使用して「/ private/etc」に移動します
  • 「shells」が空であることがわかりましたが、シェルの適切なリストが含まれている「shells〜orig」がありました。
  • 「シェル」を削除する
  • 「shells〜orig」を選択します
  • Command-C、Command-Vでコピーして貼り付けます。これにより、「shells〜origcopy」が作成されます
  • 「shells〜origcopy」を選択します
  • もう一度クリックして名前変更モードに入り、「shells〜origcopy」の名前を「shells」に変更します
  • [情報]ポップアップに戻り、[全員]の権限設定を元の値に戻します
  • 情報ポップアップを閉じる

シェルの有効なリストを含む「shells」ファイルができたので、ターミナルを再び開くことができました。

5
Lindsay

私も同じ問題を抱えていました。再起動は私のためにトリックをしました。 Macでそれをする必要があることに慣れていない:-P

4
atraudes

システム環境設定の「アカウント」パネルでアカウント名を右クリックし、「詳細オプション」を選択します。 「ログインシェル」の値を変更します-私は/ bin/bashを使用しますが、インストールされているシェルは自由に使用できます。

4
Tim

システム環境設定でユーザーアカウントのパスワードを変更すると、これが修正されました(同じ値に変更したため、OSがユーザーアカウント情報をファイルに書き込むように強制された可能性があります)。 Mac OS X 10.7.3を使用していますが、/ etc内のファイルは変更されていないようです。

3
Adam Nohejl

私もまったく同じ問題を抱えていました。簡単な解決策:

ディスクユーティリティでディスクパーミッションの修復を実行するだけです:-)。

3
hobbes3

Timchemm の回答を組み合わせると、私の場合は役に立ちました。

ティムのアプローチを使用して、別のシェルを使用して端末を起動しました。次に、/ etc/shellsを編集して優先シェルを含め、Timのアプローチを再度使用して、[詳細オプション]で元のシェルパスを復元しました。

2
Frank

私も同じ問題を抱えていました。 Time Machineは、何らかの理由で、復元中に/private/etc/shellsを長さゼロのファイルに変換しました。 chemmの答えはかなり良いですが、私のようなMac初心者のためのいくつかのステップを逃しています。

  • /private/etcにアクセスするには、FinderメニューのGo -> Go to Folderオプションを使用して/private/etcと入力する必要があります
  • 次に、シェルファイルを見つけます。
  • ファイルを編集できないので、削除しました。
  • 次に、タイムマシンを使用してそのファイルを復元しました。
  • Finderでタイムマシンを入力すると、その/private/etcフォルダから開始されます。
  • 復元したとき、Time Machineをそのフォルダーに転送する方法がわからなかったため([フォルダーに移動]オプションが表示されませんでした)、デスクトップに「シェル」を復元し、Finderを使用してファイルをコピーして貼り付けました。 /private/etc

上記を実現するには、パスワードを数回入力する必要があります。また、管理者アカウントを使用している必要があると思います。

2
user33466

私にとって、標準的な答えはどれも問題ではありませんでした-すべてが現状のままでした。

Aquamacs(emacs)セッションを終了すると、問題が修正されました! Aquamacsを再起動すると、ターミナルは引き続き正常に動作しました。

私はemacsShellコマンドを使用していませんでしたが、どういうわけか、これらのアプリケーションは依然として不幸な方法で相互作用していました。

0
Howard Nebeck