Bash

sudo 誤解別名

  • February 27, 2020

在我~/.bashrcalias link='ln -sf'集合中,它在我的 shell 會話期間相應地工作。

但是,對於我需要sudo在命令開頭使用的根保護位置,它會引發以下錯誤: link: cannot create link '<$2>' to '<$1>': Operation not permitted

到底發生了什麼?我怎麼能繞過它?

sudo是一個不知道您的別名的外部命令。只有你的 shell 知道你的別名,而sudo不是它的一部分。

在這種情況下,我猜想sudo嘗試執行二進製文件,這在我的 Linux 系統上是一個簡單的命令,它總是通過呼叫系統呼叫/usr/bin/link來創建連結:link(2)

$ link --help
Usage: link FILE1 FILE2
 or:  link OPTION
Call the link function to create a link named FILE2 to an existing FILE1.

     --help     display this help and exit
     --version  output version information and exit

GNU coreutils online help: <https://www.gnu.org/software/coreutils/>
Full documentation at: <https://www.gnu.org/software/coreutils/link>
or available locally via: info '(coreutils) link invocation'

引用自:https://unix.stackexchange.com/questions/570094