zed/crates
Thorsten Ball 43da37b0ab
shell: Load SHELL from passwd entry if launched as desktop app (#11758)
This fixes #8794 and other related problems.

The problem, in short, is this: `$SHELL` might be outdated. This code
ensures that we update `$SHELL` to what we can deem the newest version,
if we're started as a desktop application.

The background is that you can get the user's preferred shell in two
ways:

1. Read the `SHELL` env variable
2. Read the `/etc/passwd` file and check which shell is set

Most applications should and do prefer (1) over (2).

Why is it preferred? Reading `SHELL` means that processes can inherit
the variable from each other. And you can do something like
`SHELL=/bin/cool-shell ./my-cool-app`

But what happens if the application was launched from the desktop? Which
SHELL env does it inherit then?

It inherits the env from the process that launched it, which is
Finder.app or launchd or GNOME or something else — these are all
long-running processes that get their environment when the user logs in.

They do *not* get a new environment unless restarted (either process
restarted or computer restarted)

That means the `SHELL` env variable they have might be outdated.

That's a problem if you, for example, change your shell with `chsh` and
then launch the app from the desktop.

That change of the default shell is not reflected in the app if the app
only reads from SHELL. Because that hasn’t been updated. Instead it
should read from passwd file to get the newest value.



Release Notes:

- Fixed SHELL being outdated if Zed was launched via Finder or Raycast
or other desktop launchers.
([#8794](https://github.com/zed-industries/zed/issues/8794))
2024-05-14 10:16:55 +02:00
..
activity_indicator linux: Store binary path before restart to handle deleted binary file (#11568) 2024-05-08 19:13:28 +02:00
anthropic Extract http from util (#11680) 2024-05-10 15:50:20 -06:00
assets New revision of the Assistant Panel (#10870) 2024-04-23 16:23:26 -07:00
assistant Extract http from util (#11680) 2024-05-10 15:50:20 -06:00
assistant2 Change ToolOutput to ToolView (#11682) 2024-05-10 15:22:09 -07:00
assistant_tooling Bring the Tool Calling README up to date (#11683) 2024-05-12 04:47:19 -07:00
audio Introduce InlineCompletionProvider (#9777) 2024-03-26 13:28:06 +01:00
auto_update Extract http from util (#11680) 2024-05-10 15:50:20 -06:00
breadcrumbs Break typography styles out of StyledExt (#11013) 2024-04-25 17:42:53 -04:00
call Extract http from util (#11680) 2024-05-10 15:50:20 -06:00
channel Extract http from util (#11680) 2024-05-10 15:50:20 -06:00
cli linux cli (#11585) 2024-05-09 21:08:49 -06:00
client Bundle linux deps (#11681) 2024-05-13 14:10:03 -06:00
clock Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
collab Extract http from util (#11680) 2024-05-10 15:50:20 -06:00
collab_ui Extract http from util (#11680) 2024-05-10 15:50:20 -06:00
collections gpui: Add SVG rendering to img element and generic asset cache (#9931) 2024-03-29 17:09:49 -07:00
color Fix hex_to_hsla inside the color crate (#9412) 2024-03-15 16:58:46 -04:00
command_palette preview tabs: Allow replacing preview tab when using code navigation (#10730) 2024-04-29 20:47:01 +02:00
command_palette_hooks Introduce InlineCompletionProvider (#9777) 2024-03-26 13:28:06 +01:00
copilot Extract http from util (#11680) 2024-05-10 15:50:20 -06:00
db Clean up whitespace (#10755) 2024-04-23 13:31:21 -04:00
dev_server_projects Add xtask for finding crates with missing licenses (#11776) 2024-05-13 18:52:12 -04:00
diagnostics Introduce DisplayRow, MultiBufferRow newtypes and BufferRow type alias (#11656) 2024-05-11 00:06:51 +03:00
editor Remove selection highlights from deleted diff editors on blur (#11772) 2024-05-14 01:15:49 +03:00
extension Extract http from util (#11680) 2024-05-10 15:50:20 -06:00
extension_api Improve extension API documentation (#10322) 2024-04-09 10:38:29 -04:00
extension_cli Add git blame (#8889) 2024-03-28 18:32:11 +01:00
extensions_ui Extract Ruby extension (#11360) 2024-05-10 11:53:11 -04:00
feature_flags WIP: remoting (#10085) 2024-04-11 15:36:35 -06:00
feedback Extract http from util (#11680) 2024-05-10 15:50:20 -06:00
file_finder Remove 'Destructive' prompts (#11631) 2024-05-09 18:52:09 -06:00
file_icons gpui: Fix Global trait (#11187) 2024-04-29 16:37:37 -04:00
fs linux cli (#11585) 2024-05-09 21:08:49 -06:00
fsevent Retain run loop (#11241) 2024-04-30 23:31:59 -06:00
fuzzy Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
git Extract http from util (#11680) 2024-05-10 15:50:20 -06:00
git_hosting_providers Extract http from util (#11680) 2024-05-10 15:50:20 -06:00
go_to_line Introduce DisplayRow, MultiBufferRow newtypes and BufferRow type alias (#11656) 2024-05-11 00:06:51 +03:00
google_ai Extract http from util (#11680) 2024-05-10 15:50:20 -06:00
gpui Extract http from util (#11680) 2024-05-10 15:50:20 -06:00
gpui_macros Adjust names of negated style methods (#11453) 2024-05-06 13:56:25 -04:00
headless linux cli (#11585) 2024-05-09 21:08:49 -06:00
http Add missing LICENSE file to http crate (#11773) 2024-05-13 18:26:12 -04:00
image_viewer Add xtask for finding crates with missing licenses (#11776) 2024-05-13 18:52:12 -04:00
inline_completion_button Supermaven (#10788) 2024-05-03 12:50:42 -07:00
install_cli Fix flickering (#9012) 2024-03-11 10:45:57 +01:00
journal Add the ability for extensions to provide language settings (#10296) 2024-04-08 19:17:12 -04:00
language editor: Support walking through overlapping diagnostics (#11139) 2024-05-11 00:32:49 +02:00
language_selector Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
language_tools Return prettier entry back to LSP logs (#11563) 2024-05-08 18:21:43 +03:00
languages chore: Improve dev build startup time (#11692) 2024-05-11 10:10:13 +02:00
live_kit_client Hoist nanoid to workspace-level (#11029) 2024-04-25 22:37:40 -04:00
live_kit_server Vendor LiveKit protocol (#11672) 2024-05-10 14:18:40 -04:00
lsp lsp: More information in error if server fails to start (#11343) 2024-05-03 13:23:52 +02:00
markdown Add xtask for finding crates with missing licenses (#11776) 2024-05-13 18:52:12 -04:00
markdown_preview markdown preview: Break up list items into individual blocks (#10852) 2024-04-26 21:34:45 +02:00
media Revert "Revert "Revert dependency updates in #9836 (#10089)"" 2024-04-02 13:12:38 -06:00
menu Fix the linux keymap (#9829) 2024-03-26 16:10:09 -07:00
multi_buffer Introduce DisplayRow, MultiBufferRow newtypes and BufferRow type alias (#11656) 2024-05-11 00:06:51 +03:00
node_runtime Extract http from util (#11680) 2024-05-10 15:50:20 -06:00
notifications Fix mention notifications are not updated after message change and not removed after a message is deleted (#9847) 2024-04-02 20:40:00 -06:00
open_ai Extract http from util (#11680) 2024-05-10 15:50:20 -06:00
outline Introduce DisplayRow, MultiBufferRow newtypes and BufferRow type alias (#11656) 2024-05-11 00:06:51 +03:00
picker new path picker (#11015) 2024-04-26 13:25:25 -06:00
prettier Fix prettier-plugin-organize-imports plugin removes used imports (#9598) 2024-03-21 08:23:15 +01:00
project Extract http from util (#11680) 2024-05-10 15:50:20 -06:00
project_panel project panel: Allow confirming prompt with keyboard (#11346) 2024-05-03 15:15:39 +02:00
project_symbols Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
quick_action_bar Do not show tooltip for editor controls if clicked (#10679) 2024-04-17 13:20:47 +02:00
recent_projects Make border methods always require an explicit width (#11450) 2024-05-06 13:22:47 -04:00
refineable Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
release_channel linux cli (#11585) 2024-05-09 21:08:49 -06:00
rich_text New revision of the Assistant Panel (#10870) 2024-04-23 16:23:26 -07:00
rope Revert "Revert "language: Remove buffer fingerprinting (#9007)"" (#9671) 2024-04-12 18:40:35 +02:00
rpc remoting: Edit dev server (#11344) 2024-05-06 12:58:11 +02:00
search Introduce DisplayRow, MultiBufferRow newtypes and BufferRow type alias (#11656) 2024-05-11 00:06:51 +03:00
semantic_index Extract http from util (#11680) 2024-05-10 15:50:20 -06:00
semantic_version Extract SemanticVersion into its own crate (#9956) 2024-03-29 12:11:57 -04:00
settings Don't log JSON parse errors with no settings (#11459) 2024-05-06 14:55:44 -06:00
snippet Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
sqlez Rename RemoteProject -> DevServerProject (#11301) 2024-05-02 11:00:08 -06:00
sqlez_macros Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
story Introduce a new markdown crate (#11556) 2024-05-09 11:03:33 +02:00
storybook Add Tool Strip (#11756) 2024-05-13 17:58:08 -04:00
sum_tree Update docstring for SumTree (#10927) 2024-04-24 14:01:10 +02:00
supermaven Add xtask for finding crates with missing licenses (#11776) 2024-05-13 18:52:12 -04:00
supermaven_api Add xtask for finding crates with missing licenses (#11776) 2024-05-13 18:52:12 -04:00
tab_switcher Add preview tabs (#9125) 2024-04-11 23:09:12 +02:00
task tasks: Prefer worktree tasks to global tasks in tag selection (#11427) 2024-05-06 16:53:48 +02:00
tasks_ui Add support for detecting tests in source files, and implement it for Rust (#11195) 2024-05-05 16:32:48 +02:00
telemetry_events Hang diagnostics (#11190) 2024-04-29 17:13:28 -07:00
terminal linux cli (#11585) 2024-05-09 21:08:49 -06:00
terminal_view gpui: Pass Style by value to request_layout (#11597) 2024-05-09 11:38:53 +02:00
text Extract http from util (#11680) 2024-05-10 15:50:20 -06:00
theme Adjust names of negated style methods (#11453) 2024-05-06 13:56:25 -04:00
theme_importer Rust 1.78 (#11314) 2024-05-05 15:02:50 +02:00
theme_selector Add support for applying theme after extension is installed (#9529) 2024-03-20 11:13:58 -04:00
time_format Inline git blame (#10398) 2024-04-15 14:21:52 +02:00
ui Add Tool Strip (#11756) 2024-05-13 17:58:08 -04:00
ui_text_field Make border methods always require an explicit width (#11450) 2024-05-06 13:22:47 -04:00
util Extract http from util (#11680) 2024-05-10 15:50:20 -06:00
vcs_menu vcs menu: Use project's repositories, do not open directly (#11652) 2024-05-10 11:06:32 +02:00
vim vim test redux (#11709) 2024-05-11 14:04:05 -04:00
welcome Supermaven (#10788) 2024-05-03 12:50:42 -07:00
workspace Add autosave with delay (#11325) 2024-05-12 17:18:30 -04:00
worktree Extract http from util (#11680) 2024-05-10 15:50:20 -06:00
zed shell: Load SHELL from passwd entry if launched as desktop app (#11758) 2024-05-14 10:16:55 +02:00
zed_actions Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00