微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在不解析 Haskell 中的 realpath 的情况下切换当前工作目录?

如何解决如何在不解析 Haskell 中的 realpath 的情况下切换当前工作目录?

在我的用例中,我想生成一个当前目录设置为特定目录的 shell,供用户执行某些操作,问题是用户经常将他们的 PS1 设置为打印当前工作目录,而我不这样做如果他们指定的目录是软链接的目录(指向同一个目录但路径名更短,请参见下面的示例),不希望显示长而荒谬的路径。

但是这种行为似乎无处不在,我不知道是否有办法解决

$ cd /tmp
$ mkdir -p some/ridiculously/long/path/name/that/no/one/wants/to/see
$ ln -s /tmp/some/ridiculously/long/path/name/that/no/one/wants/to/see s
$ ghci
GHCi,version 8.8.3: https://www.haskell.org/ghc/  :? for help
Prelude> import System.Directory
Prelude System.Directory> setCurrentDirectory "/tmp/s"
Prelude System.Directory> getCurrentDirectory 
"/tmp/some/ridiculously/long/path/name/that/no/one/wants/to/see"

同样适用于 turtlecd / pushd,它似乎使用 system-fileio 而不是 directory,但相同的行为仍然存在。我知道 CreateProcessprocess一个 cwd 记录字段,我可以在我即将生成 shell 时设置它,但这似乎也是如此。所以我已经没有其他可以尝试的想法了。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。