General helper tool.
Syntax pbs [-debug] [-dump] [-dump_cache] [-dump_pboard] [-dump_userdefs] [-flush_pboard] [-flush_userdefs] [-flush] [-existing_languages] language1 language2 ... Key -debug Output debugging information regarding what pbs is doing. -dump_pboard Print the private pasteboard containing the current Services information. Use this to determine which apps are providing Services and where they are located on the filesystem. -dump_userdefs Print the userdef cache of Services information. pbs caches Services information in its userdefs to avoid scanning the entire system every boot. Changed apps are still detected via FSEvents, so there is no need to flush the userdef cache when installing a new Service. -dump Equivalent to -dump_pboard and -dump_userdefs, printing. -flush_pboard Erase the private pasteboard containing Services information. The next time the Services menu is shown, pbs will scan for changed Services and update the pasteboard. -flush_userdefs Erase the userdef cache. -flush Equivalent to -flush_pboard and -flush_userdefs, entirely resetting pbs. The next time Services information is needed, pbs will do a complete rescan for apps vending Services, and read their plist. Note: this rescan may be very expensive!
pbs is an agent for the Services menu. It scans for and vends available Services, to populate the Services menu.
pbs is NOT related to the pasteboard. The pasteboard is managed by the pboard agent. pbs normally runs the first time Services are needed in any login session. You may run it manually for debugging Services.
If run without any options, pbs will scan for changed Services, cache them along with their English localization on a private pasteboard, and immediately update the Services menu in all running apps. It will also log about any invalid Services declarations in Info.plist. This is useful when developing or testing Services, because it immediately applies any changes.
ServicesMenu.strings files for a localization are loaded only when an app running under that localization shows the Services menu.
You may pass pbs language codes (e.g. "fr") to cause it to load that localization immediately. Language codes are not case sensitive and will accept a dash '-' or underscore '_' interchangably where needed. You may also pass the flag -existing_languages to reload already loaded localizations. pbs has additional options that are useful for debugging, in particular the -dump_pboard option.
pbs has historically had responsibilities that ranged from pasteboard management to Unicode glyph generation, but now it only does Services.
Scan for and cache Services in English/American language:
$ /System/Library/CoreServices/pbs "en-US"
Scan for and cache Services in English/UK language:
$ /System/Library/CoreServices/pbs "en-GB"
"Philosophy is a battle against the bewitchment of our intelligence by means of our language" ~ Ludwig Wittgenstein
Related macOS commands:
dscacheutil - Query or flush the Directory Service/DNS cache