Title: pwsh (Mac) does not work with "expect" correctly (unusual escape characters printed) · Issue #18874 · PowerShell/PowerShell · GitHub
Open Graph Title: pwsh (Mac) does not work with "expect" correctly (unusual escape characters printed) · Issue #18874 · PowerShell/PowerShell
X Title: pwsh (Mac) does not work with "expect" correctly (unusual escape characters printed) · Issue #18874 · PowerShell/PowerShell
Description: Prerequisites Write a descriptive title. Make sure you are able to repro it on the latest released version Search the existing issues. Refer to the FAQ. Refer to Differences between Windows PowerShell 5.1 and PowerShell. Steps to reprodu...
Open Graph Description: Prerequisites Write a descriptive title. Make sure you are able to repro it on the latest released version Search the existing issues. Refer to the FAQ. Refer to Differences between Windows PowerSh...
X Description: Prerequisites Write a descriptive title. Make sure you are able to repro it on the latest released version Search the existing issues. Refer to the FAQ. Refer to Differences between Windows PowerSh...
Opengraph URL: https://github.com/PowerShell/PowerShell/issues/18874
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"pwsh (Mac) does not work with \"expect\" correctly (unusual escape characters printed)","articleBody":"### Prerequisites\r\n\r\n- [X] Write a descriptive title.\r\n- [X] Make sure you are able to repro it on the [latest released version](https://github.com/PowerShell/PowerShell/releases)\r\n- [X] Search the existing issues.\r\n- [X] Refer to the [FAQ](https://github.com/PowerShell/PowerShell/blob/master/docs/FAQ.md).\r\n- [X] Refer to [Differences between Windows PowerShell 5.1 and PowerShell](https://docs.microsoft.com/powershell/scripting/whats-new/differences-from-windows-powershell).\r\n\r\n### Steps to reproduce\r\n\r\npwsh on Mac is showing odd output when used with /usr/bin/expect\r\nI first noticed this while using pwsh with \"unbuffer\", which is a shell wrapper for expect\r\n\r\nI managed to repro with just: \r\n`bash\u003e$ expect -c \"spawn pwsh -c [command]; expect eof\"`\r\nwhere [command] is another compiled program rather than a cmdlet\r\n\r\nFor instance:\r\n`bash\u003e$ expect -c \"spawn pwsh -c Write-Output 'PowerShell 7.3.1'; expect eof\"`\r\n\r\nWorks fine, and has the following output:\r\n```\r\nspawn pwsh -c Write-Output 'PowerShell 7.3.1'`\r\nPowerShell 7.3.1\r\n```\r\n\r\nOn the other hand,\r\n`bash\u003e$ expect -c \"spawn pwsh -c pwsh --version; expect eof\"`\r\n\r\nwhich should have the same output (and does when not run from expect), outputs this:\r\n```\r\nspawn pwsh -c pwsh --version\r\n^[[31;1R^[[31;9Rbash\u003e$ ;1R;9R\r\n```\r\nNote that some of the garbage comes out after the prompt\r\nAlso note, this is using expect version 5.45. In addition, I rebuilt expect from brew to be sure, and it was still the same.\r\nNo other shells have an issue like this with expect.\r\n\r\nThis started when I had written a simple python script that writes to stdout and stderr on a clock, and was using it to see when a program's stdout would be buffered, and when it would think it was printing to a terminal and come out in real time. (This was how this all started, as long scripts that buffer their stdout but not stderr can have stack traces that come out dozens if not hundreds of lines from the corresponding output, which is annoying) \r\n\r\nHere is the program, in python 3.10.7\r\n\r\n```\r\nimport os\r\nimport sys\r\nimport time\r\n\r\ni: int = 0\r\n\r\nwhile i \u003c 4:\r\n sys.stdout.write(f'Stdout mark {i}{os.linesep}')\r\n sys.stderr.write(f'Stderr mark {i}{os.linesep}')\r\n time.sleep(1)\r\n i += 1\r\n```\r\nwhen launched from:\r\n`pwsh -c python3 clock.py`\r\nThe output is as expected:\r\n```\r\nStdout mark 0\r\nStderr mark 0\r\nStdout mark 1\r\nStderr mark 1\r\nStdout mark 2\r\nStderr mark 2\r\nStdout mark 3\r\nStderr mark 3\r\n```\r\n\r\nwhen launched from:\r\n`unbuffer pwsh -c python3 clock.py`\r\n(unbuffer being a wrapper for expect) the command hangs for a few seconds, then the output is as follows:\r\n```\r\n^[[32;1R^[[32;9RStdout mark 0\r\nStderr mark 0\r\nStdout mark 1\r\nStderr mark 1\r\nStdout mark 2\r\nStderr mark 2\r\nStdout mark 3\r\nStderr mark 3\r\nbash\u003e$ ;1R;9R\r\n```\r\nOnce again, note that some of the garbage is printed into the terminal after prompt is written.\r\n\r\n\r\n\r\n### Expected behavior\r\n\r\n```console\r\nbash\u003e$ expect -c \"spawn pwsh -c pwsh --version; expect eof\"\r\nspawn pwsh -c pwsh --version\r\nPowerShell 7.3.1\r\n```\r\n\r\n\r\n### Actual behavior\r\n\r\n```console\r\nbash\u003e$ expect -c \"spawn pwsh -c pwsh --version; expect eof\"\r\nspawn pwsh -c pwsh --version\r\n^[[32;1R^[[32;9Rbash\u003e$ ;1R;9R\r\n```\r\n\r\n\r\n### Error details\r\n\r\n_No response_\r\n\r\n### Environment data\r\n\r\n```powershell\r\nName Value\r\n---- -----\r\nPSVersion 7.3.1\r\nPSEdition Core\r\nGitCommitId 7.3.1\r\nOS Darwin 21.6.0 Darwin Kernel Version 21.6.0: Wed Aug 10 14:28:35 PDT 2022; root:xnu-8020.141.5~2/RELEASE_ARM64_T8101\r\nPlatform Unix\r\nPSCompatibleVersions {1.0, 2.0, 3.0, 4.0…}\r\nPSRemotingProtocolVersion 2.3\r\nSerializationVersion 1.1.0.1\r\nWSManStackVersion 3.0\r\n```\r\n\r\n\r\n### Visuals\r\n\r\n_No response_","author":{"url":"https://github.com/christopherdwelton","@type":"Person","name":"christopherdwelton"},"datePublished":"2023-01-01T14:52:02.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":4},"url":"https://github.com/18874/PowerShell/issues/18874"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:05d686a1-d6f1-bf4a-4dc5-3539c8e4f19a |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | AE72:1BA082:37F127:4AB47B:6A580096 |
| html-safe-nonce | f50f667c54459e07cc31e240950bb7849f5ab98eb9a33216747e0f4644c24c7c |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJBRTcyOjFCQTA4MjozN0YxMjc6NEFCNDdCOjZBNTgwMDk2IiwidmlzaXRvcl9pZCI6IjUyNzE3Mzc5ODE1MzUyNTY3MjYiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ== |
| visitor-hmac | 3e200ac193eb809ae1cce0aca9a55c7f41f9e261f89d09d074f72288daf39364 |
| hovercard-subject-tag | issue:1515618728 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/PowerShell/PowerShell/18874/issue_layout |
| twitter:image | https://opengraph.githubassets.com/8d533dca147865bc1129f7e2b337134c46b4d26e05f275858771c68aa82dbe6e/PowerShell/PowerShell/issues/18874 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/8d533dca147865bc1129f7e2b337134c46b4d26e05f275858771c68aa82dbe6e/PowerShell/PowerShell/issues/18874 |
| og:image:alt | Prerequisites Write a descriptive title. Make sure you are able to repro it on the latest released version Search the existing issues. Refer to the FAQ. Refer to Differences between Windows PowerSh... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | christopherdwelton |
| hostname | github.com |
| expected-hostname | github.com |
| None | 49c8c15fabcbf356d607a90ca115c13b273e42ff8b74155de050fd229a9b0121 |
| turbo-cache-control | no-preview |
| go-import | github.com/PowerShell/PowerShell git https://github.com/PowerShell/PowerShell.git |
| octolytics-dimension-user_id | 11524380 |
| octolytics-dimension-user_login | PowerShell |
| octolytics-dimension-repository_id | 49609581 |
| octolytics-dimension-repository_nwo | PowerShell/PowerShell |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 49609581 |
| octolytics-dimension-repository_network_root_nwo | PowerShell/PowerShell |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 3fb1f684e7a833eb1b2d01d39875a2b52cb4fe9b |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width