# [PATCH 0/1] t7528: fix failure under csh

4 messages from 2026-08-03 to 2026-08-03. Participants: Kenneth Lorber, brian m. carlson, Junio C Hamano.
Thread: https://gitlist.dev/t/66104

## Kenneth Lorber, 2026-08-03 00:41

Subject: [PATCH 0/1] t7528: fix failure under csh
Message-ID: <20260803004105.36913-1-keni@his.com>

```
The test suite fails at t7528 when run in an account with tcsh as
the login shell due to $SHELL being "/bin/tcsh"; similar behaviour
is expected under other csh-like shells.

From ssh-agent(1):
-s      Generate Bourne shell commands on stdout.  This is the  default
               if SHELL does not look like it's a csh style of shell.

This patch explicitly tells ssh-agent to use Bourne shell syntax, thus
removing a spurious test failure for users with csh style shells.

An alternative change would be to have test-lib.sh clear $SHELL; this
was rejected as potentially hiding additional similar errors.  There
are no such additional errors evident currently.

No additional tests are added as the error is in the setup for
testing, not an error in git itself.

Kenneth Lorber (1):
  t7528: fix failure under csh

 t/t7528-signed-commit-ssh.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

-- 
2.43.0



```

## Kenneth Lorber, 2026-08-03 00:41

Subject: [PATCH 1/1] t7528: fix failure under csh
Message-ID: <20260803004105.36913-2-keni@his.com>
In-Reply-To: <20260803004105.36913-1-keni@his.com>

```
Explicitly set sh mode for ssh-agent (ssh-agent -s) to prevent
failure when user's login shell is csh-like.  The failure is
caused by propagation of the $SHELL value from the user's original
shell despite the test and test harness explictly using sh, which
makes ssh-agent emit initialization code for the wrong shell:

> cd t
> echo $SHELL
/bin/tcsh
> ./t7528-signed-commit-ssh.sh --verbose --debug
[...]
expecting success of 7528.2 'sign commits using literal public keys with ssh-agent':
[...]
./t7528-signed-commit-ssh.sh: 1: eval: setenv: not found
./t7528-signed-commit-ssh.sh: 1: eval: setenv: not found
[...]

Signed-off-by: Kenneth Lorber <keni@his.com>
---
 t/t7528-signed-commit-ssh.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/t/t7528-signed-commit-ssh.sh b/t/t7528-signed-commit-ssh.sh
index b50306b9b3..7bf4a40de2 100755
--- a/t/t7528-signed-commit-ssh.sh
+++ b/t/t7528-signed-commit-ssh.sh
@@ -82,7 +82,7 @@ test_expect_success GPGSSH 'create signed commits' '
 test_expect_success GPGSSH 'sign commits using literal public keys with ssh-agent' '
 	test_when_finished "test_unconfig commit.gpgsign" &&
 	test_config gpg.format ssh &&
-	eval $(ssh-agent -T || ssh-agent) &&
+	eval $(ssh-agent -T -s || ssh-agent -s) &&
 	test_when_finished "kill ${SSH_AGENT_PID}" &&
 	test_when_finished "test_unconfig user.signingkey" &&
 	mkdir tmpdir &&
-- 
2.43.0



```

## brian m. carlson, 2026-08-03 02:13

Subject: Re: [PATCH 1/1] t7528: fix failure under csh
Message-ID: <am_5YymI-UnCT_s1@fruit.crustytoothpaste.net>
In-Reply-To: <20260803004105.36913-2-keni@his.com>

```
On 2026-08-03 at 00:41:03, Kenneth Lorber wrote:
> Explicitly set sh mode for ssh-agent (ssh-agent -s) to prevent
> failure when user's login shell is csh-like.  The failure is
> caused by propagation of the $SHELL value from the user's original
> shell despite the test and test harness explictly using sh, which
> makes ssh-agent emit initialization code for the wrong shell:
> 
> > cd t
> > echo $SHELL
> /bin/tcsh
> > ./t7528-signed-commit-ssh.sh --verbose --debug
> [...]
> expecting success of 7528.2 'sign commits using literal public keys with ssh-agent':
> [...]
> ./t7528-signed-commit-ssh.sh: 1: eval: setenv: not found
> ./t7528-signed-commit-ssh.sh: 1: eval: setenv: not found
> [...]
> 
> Signed-off-by: Kenneth Lorber <keni@his.com>
> ---
>  t/t7528-signed-commit-ssh.sh | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/t/t7528-signed-commit-ssh.sh b/t/t7528-signed-commit-ssh.sh
> index b50306b9b3..7bf4a40de2 100755
> --- a/t/t7528-signed-commit-ssh.sh
> +++ b/t/t7528-signed-commit-ssh.sh
> @@ -82,7 +82,7 @@ test_expect_success GPGSSH 'create signed commits' '
>  test_expect_success GPGSSH 'sign commits using literal public keys with ssh-agent' '
>  	test_when_finished "test_unconfig commit.gpgsign" &&
>  	test_config gpg.format ssh &&
> -	eval $(ssh-agent -T || ssh-agent) &&
> +	eval $(ssh-agent -T -s || ssh-agent -s) &&
>  	test_when_finished "kill ${SSH_AGENT_PID}" &&
>  	test_when_finished "test_unconfig user.signingkey" &&
>  	mkdir tmpdir &&

This seems reasonable.  SHELL is defined by POSIX as "a pathname of the
user's preferred command language interpreter."  When we're running the
testsuite, we don't care what that is and always want a POSIX
sh-compatible output, so using `-s` is the right thing.

I also don't see any other instances of `ssh-agent` in the codebase, so
this looks like the only place we need to fix.
-- 
brian m. carlson (they/them)
Toronto, Ontario, CA

```

## Junio C Hamano, 2026-08-03 14:42

Subject: Re: [PATCH 1/1] t7528: fix failure under csh
Message-ID: <xmqqy0enz2o4.fsf@gitster.g>
In-Reply-To: <am_5YymI-UnCT_s1@fruit.crustytoothpaste.net>

```
"brian m. carlson" <sandals@crustytoothpaste.net> writes:

>> @@ -82,7 +82,7 @@ test_expect_success GPGSSH 'create signed commits' '
>>  test_expect_success GPGSSH 'sign commits using literal public keys with ssh-agent' '
>>  	test_when_finished "test_unconfig commit.gpgsign" &&
>>  	test_config gpg.format ssh &&
>> -	eval $(ssh-agent -T || ssh-agent) &&
>> +	eval $(ssh-agent -T -s || ssh-agent -s) &&
>>  	test_when_finished "kill ${SSH_AGENT_PID}" &&
>>  	test_when_finished "test_unconfig user.signingkey" &&
>>  	mkdir tmpdir &&
>
> This seems reasonable.  SHELL is defined by POSIX as "a pathname of the
> user's preferred command language interpreter."  When we're running the
> testsuite, we don't care what that is and always want a POSIX
> sh-compatible output, so using `-s` is the right thing.
>
> I also don't see any other instances of `ssh-agent` in the codebase, so
> this looks like the only place we need to fix.

Thanks for being careful.  Will queue.

```
