4

File with no extension will be opened by TextEdit by default. For example, in terminal run open ~/.ssh/known_hosts will open TextEdit to edit known_hosts

These files are normally just text file so I don't want to use TextEdit open them (e.g. I want to use BBEdit to open them) but because they have no extension I can't find an each way to change the default app to open them in one shot. Change them one by one is not workable.

So is there any way to change them in one shot?

Replace Text Edit as the default text editor does not work for me,

First, the highest two answers there said something like duti -s com.sublimetext.4 public.plain-text all but as @Seamus said in his updated answer "The accepted answer may have been correct when it was written, but does not work for current (as of approximately Catalina vintage) systems because the UTI for a text file without a file extension is now apparently public.data". Besides I don't know how edit bbedit part, is it com.bbedit.13 (I use bbedit 13 or what else)?

Second, all the other 3rd-party apps are too old, at least 10 years old without any update.

  • 1
    Any unresolved aspects of this question? ICYI, I found a lot of useful information for further research from these sources: 1; 2; 3; 4 – Seamus Apr 30 '23 at 00:52

2 Answers2

3

This is one way to do it. Note that I've done limited testing of this on my macOS Ventura system - YMMV.

One Approach:

In Terminal.app enter the following command:

% defaults write ~/Library/Preferences/com.apple.LaunchServices/com.apple.launchservices.secure.plist LSHandlers -array-add '{LSHandlerContentType=public.data;LSHandlerRoleAll=com.barebones.bbedit;}'

You will need to re-start your machine afterwards for this to take effect.

Alternatively, you may edit the file ~/Library/Preferences/com.apple.LaunchServices/com.apple.launchservices.secure.plist to add the following as the last <dict> element in the plist:

        .
        ..
        ...
        <dict>
            <key>LSHandlerContentType</key>
            <string>public.data</string>
            <key>LSHandlerRoleAll</key>
            <string>com.barebones.bbedit</string>
        </dict>
    </array>
</dict>
</plist>
Seamus
  • 4,547
  • "Other answers depend on 3rd-party apps which are either obsolete or ill-maintained." A Swift one: https://github.com/Lord-Kamina/SwiftDefaultApps – Redarm Apr 28 '23 at 23:42
  • 1
    Is restarting the only way? – Andy Mar 23 '24 at 14:12
  • @Andy: good question. Based on similar usages of defaults you *may have* a couple of alternatives to a re-start: 1) log out & logon; 2) run killall Finder from the Terminal. – Seamus Mar 23 '24 at 18:50
  • I tried log out/on and relaunching Finder&Dock - no luck – Andy Mar 23 '24 at 20:04
  • @Andy: Have you tried a re-start? Sorry - it's been almost a year since this was posted. I do try hard to test everything I put in an answer, so it's also possible that a re-start was the only way I found to make it persistent. ALSO: Just checked my system, and learned the file has been changed to a *binary* file in one of Apple's updates. Consequently, it is also possible that this no longer works! – Seamus Mar 23 '24 at 20:43
  • It worked for me with restart but I would really like to avoid it somehow – Andy Mar 23 '24 at 21:41
  • @Andy: What version of macOS are you using for this task? – Seamus Mar 23 '24 at 21:46
  • The latest 14.4 – Andy Mar 24 '24 at 09:23
  • @Andy: And is the file ~/Library/Preferences/com.apple.LaunchServices/com.apple.launchservices.secure.plist on your system a plain-text file? – Seamus Mar 24 '24 at 18:56
0

The modern replacement for RCDefaultApp (the ancient prefs pane you're presumably referring to) is "SwiftDefaultApps"

https://github.com/Lord-Kamina/SwiftDefaultApps

For text files, you need to set the handlers for public.plain-text and public.data (the latter necessary for files with no extension, which are opened by default with TextEdit - yuck)