[英]'testdir must be an absolute path' printed after using 'ls' command in fish shell
每次我在fish shell中使用ls
命令時,它都會生成“ testdir must be an absolute path
”行,然后再像任何常規的ls
調用那樣ls
目錄的內容。 無論我位於哪個目錄或傳遞給ls
選項如何,都會發生這種情況。
我已經在系統和互聯網上搜索了此消息,並在一個libfuse的測試文件中找到了它。 運行ps -ef | grep fuse
ps -ef | grep fuse
產生:
mdko 3498 3430 0 20:36 ? 00:00:00 /usr/lib/gvfs/gvfsd-fuse /run/user/1000/gvfs -f -o big_writes
確實,運行dmesg | grep fuse
dmesg | grep fuse
顯示:
[ 3.771372] fuse init (API version 7.26)
當我運行ls
在bash或zsh中,消息“ testdir must be an absolute path
”運行時,不會出現ls
。 我還通過strace
進行了一些最小的調查該問題的嘗試,包括ls
調用和fish
處理,但沒有成功。
此字符串從何而來,如何停止它?
(運行Ubuntu 17.10 64位,fish版本2.6.0)
Fish提供了一個ls
包裝器函數,如果輸出將輸出到tty(即isatty
返回true),該函數將打開顏色和指示器。
最有可能的是,您具有覆蓋此處某些內容的命令或功能。
檢查type ls
的輸出以查看ls
函數的定義:
ls is a function with definition
# Defined in /usr/share/fish/functions/ls.fish @ line 6
function ls --description 'List contents of directory'
set -l param --color=auto
if isatty 1
set -a param --indicator-style=classify
end
command ls $param $argv
end
由於您的“ ls”命令在bash中有效,因此可能不是(運行command ls --color=auto --indicator-style=classify somedir
進行確認)。
因此,您將檢查其他命令。 set
不是,因為如果將其覆蓋,則會遇到更大的問題。 isatty
是可能的,並且可以運行command test
,這也是一個候選方法。 使用type
找出魚在叫什么,然后進行更改。
例如,可能某個地方的test
命令不是POSIX風格的test
,而是運行libfuse測試的東西。 如果是這樣,請重命名或刪除該名稱。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.