lazygit icon indicating copy to clipboard operation
lazygit copied to clipboard

Should lazygit be aware of the current user's shell?

Open ghost opened this issue 3 years ago • 5 comments

Topic Today (12/27/2021), lazygit assumes that bash is present on the user's computer, on linux-based OS's at least (or if this is not the default behavior and I doing something wrong, please let me know ;) ). This discussion is about the implementation of a "env variable search" to get the current user's shell.

Your thoughts

My thoughts on the matter are a favorable to a change in the source code, making it such tha lazygit always get the current shell that it is running in. That will prevent unexpected behavior such as launching a instance of bash to run external command or maybe not executing said command at all if bash is not a executable in the user's machine. This behavior is seen in the edit command for example

image

This is something that in most use cases will not occur but today, as I know of, lazygit doesn't cover this issue.

Should it be easy enough to implement, I propose this issue be adressed.

(Again, maybe I'm being dumb and again, to my knowledge, lazygit does not handle this edge case.) Ps.: Sorry for any bad English. I'm not a native Englishe speaker.

Wishing fruitfull discussions

ghost avatar Dec 27 '21 14:12 ghost

Plus one from me, as Bash doesn't know my $PATH and so I can't open or edit unless I provide the whole path to the open/edit commands in config.

diktomat avatar Apr 24 '22 20:04 diktomat

Makes sense to me. I can't think of any good reason not to do this. One question: can we rely on each shell being invokable with the -c argument? i.e. zsh -c "echo blah"

jesseduffield avatar May 06 '22 10:05 jesseduffield

I think most of the popular shells implement the -c option, since they aim to be compatible with sh. I suppose the POSIX complaint shells should behave well with the change. I'll do some research on it, though.

ghost avatar May 06 '22 11:05 ghost

If use non-POSIX $SHELL, the string quoting process seems to break.

For example, (when commit.gpgSign=true), bash -c "git commit -m ..." is executed for commit, but fish does not need to escape ` in the commit message.

Absorbing these shell-specific differences can be difficult.

Ryooooooga avatar May 06 '22 14:05 Ryooooooga

Related: #2096

mark2185 avatar Aug 08 '22 14:08 mark2185