Repository: pymodbus-dev/pymodbus

Issue:
Fix #716
Change the history file of the REPL from hardcoded `../.pymodhis` to hardcoded `.pymodhis`, so that REPL client will run from any working directory where the user has write permissions.

<!--  Please raise your PR's against the `dev` branch instead of `master` -->



Discussion:
Kudos, SonarCloud Quality Gate passed!&nbsp; &nbsp; [![Quality Gate passed](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/QualityGateBadge/passed-16px.png 'Quality Gate passed')](https://sonarcloud.io/dashboard?id=riptideio_pymodbus&pullRequest=805)

[![Bug](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/bug-16px.png 'Bug')](https://sonarcloud.io/project/issues?id=riptideio_pymodbus&pullRequest=805&resolved=false&types=BUG) [![A](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A-16px.png 'A')](https://sonarcloud.io/project/issues?id=riptideio_pymodbus&pullRequest=805&resolved=false&types=BUG) [0 Bugs](https://sonarcloud.io/project/issues?id=riptideio_pymodbus&pullRequest=805&resolved=false&types=BUG)  
[![Vulnerability](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/vulnerability-16px.png 'Vulnerability')](https://sonarcloud.io/project/issues?id=riptideio_pymodbus&pullRequest=805&resolved=false&types=VULNERABILITY) [![A](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A-16px.png 'A')](https://sonarcloud.io/project/issues?id=riptideio_pymodbus&pullRequest=805&resolved=false&types=VULNERABILITY) [0 Vulnerabilities](https://sonarcloud.io/project/issues?id=riptideio_pymodbus&pullRequest=805&resolved=false&types=VULNERABILITY)  
[![Security Hotspot](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/security_hotspot-16px.png 'Security Hotspot')](https://sonarcloud.io/project/security_hotspots?id=riptideio_pymodbus&pullRequest=805&resolved=false&types=SECURITY_HOTSPOT) [![A](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A-16px.png 'A')](https://sonarcloud.io/project/security_hotspots?id=riptideio_pymodbus&pullRequest=805&resolved=false&types=SECURITY_HOTSPOT) [0 Security Hotspots](https://sonarcloud.io/project/security_hotspots?id=riptideio_pymodbus&pullRequest=805&resolved=false&types=SECURITY_HOTSPOT)  
[![Code Smell](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/code_smell-16px.png 'Code Smell')](https://sonarcloud.io/project/issues?id=riptideio_pymodbus&pullRequest=805&resolved=false&types=CODE_SMELL) [![A](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A-16px.png 'A')](https://sonarcloud.io/project/issues?id=riptideio_pymodbus&pullRequest=805&resolved=false&types=CODE_SMELL) [0 Code Smells](https://sonarcloud.io/project/issues?id=riptideio_pymodbus&pullRequest=805&resolved=false&types=CODE_SMELL)

[![No Coverage information](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/CoverageChart/NoCoverageInfo-16px.png 'No Coverage information')](https://sonarcloud.io/component_measures?id=riptideio_pymodbus&pullRequest=805) No Coverage information  
[![No Duplication information](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/Duplications/NoDuplicationInfo-16px.png 'No Duplication information')](https://sonarcloud.io/component_measures?id=riptideio_pymodbus&pullRequest=805&metric=duplicated_lines_density&view=list) No Duplication information


Thanks.

Resolving patch:
diff --git a/pymodbus/repl/client/main.py b/pymodbus/repl/client/main.py
--- a/pymodbus/repl/client/main.py
+++ b/pymodbus/repl/client/main.py
@@ -113,7 +113,7 @@ def convert(self, value, param, ctx):
 def cli(client): #NOSONAR pylint: disable=too-many-statements,too-many-branches
     """Client definition."""
     use_keys = KeyBindings()
-    history_file = os.path.normpath(os.path.expanduser("~/.pymodhis")
+    history_file = os.path.normpath(os.path.expanduser("~/.pymodhis"))
 
     @use_keys.add('c-space')
     def _(event):


Test patch: