私のシェルセッションには~/.bashrc
セットがあり、alias link='ln -sf'
私のシェルセッションでそれに応じて動作します。
sudo
ただし、コマンドの先頭に使用する必要があるルート保護場所の場合、次のエラーが発生します。link: cannot create link '<$2>' to '<$1>': Operation not permitted
どうしたの?どのようにバイパスできますか?
答え1
sudo
外部コマンドなので、エイリアスがわかりません。あなたのシェルだけがあなたのエイリアスを知っていますが、エイリアス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'
答え2
ここでの問題は、bashがaliasコマンドの最初の単語のみを計算し、そのテキストをそのエイリアスのテキストに置き換えることです。
これにより、bashはaliasコマンドを拡張せず、sudo <your_alias>
最初の単語自体のみを評価します。sudo
解決策は、sudo自体のエイリアスを作成することです。
次のようなエイリアスを作成すると、alias='sudo '
(sudoコマンドの後のスペースに注意してください)必要なコマンドを完了できます。