「デフォルトの対話型シェル」というテキストを含むファイルを見つけようとしています。次のgrepコマンドを使用して検索します。
grep -r --exclude-dir='/{var,Volumes,bin,cores,dev,sbin,tmp,usr}' "The default interactive shell" /
ただし、/usr
次のエラー メッセージに示すように、まだ検索します。
grep: /usr/bin/sudo: Permission denied
複数のオプションを作成せずに再帰的なgrepを実行し、複数のディレクトリを除外する方法は--exclude-dir
?システムはOSX 10.15.4です。
答え1
リテラル名を持つディレクトリを除いています/{var,Volumes,bin,cores,dev,sbin,tmp,usr}
。これは一重引用符が原因で発生します。中かっこ拡張が引用されると、もはや中括弧拡張ではなくプレーンテキストになります。
中かっこを正しく拡張するには、引用符を削除します。
grep -R --exclude-dir=/{var,Volumes,bin,cores,dev,sbin,tmp,usr} \
-F 'The default interactive shell' /
-F
正規表現ではなく文字列を使用して検索するため、追加しました。
答え2
私も同じことをしています...
OSX Big Surでbash端末を実行すると、次のメッセージが表示されます。
「デフォルトのインタラクティブシェルはzshです。zshを使用するようにアカウントを更新するには、を実行してください。chsh -s /bin/zsh
詳細については、次を参照してください。https://support.apple.com/kb/HT208050. 」
それで、「デフォルトの対話型シェル」という単語を含むファイルを見つけました。そのような文書が見つかりませんでした。
「Default Interactive Shell, etc.」というメッセージが実際に bash にハードコーディングされていることがわかりました。
hexdump -C /bin/bash 生成...
000775c0 6e 2f 7a 73 68 00 0a 54 68 65 20 64 65 66 61 75 |n/zsh..基本|
000775d0 6c 74 20 69 6e 74 65 72 61 63 74 69 76 65 20 73 |ltインタラクティブ|
000775e0 68 65 6c 6c 20 69 73 20 6e 6f 77 20 7a 73 68 2e |地獄は今zshです。 |
(注:私の$ BASH_VERSIONは3.2.57(1)リリースです。)
(注:Bashには多くのASCIIメッセージがハードコードされています。)
この警告は、〜/.bash_profileエクスポートBASH_SILENCE_DEPRECATION_WARNING = 1に次の行を追加することで抑制できます。
イアンジェームズ