簡體   English   中英

在魚殼中使用“ ls”命令后顯示“ testdir必須是絕對路徑”

[英]'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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM