エイリアスを作成するときに2つの異なるパスを提供する必要があるのはなぜですか?

エイリアスを作成するときに2つの異なるパスを提供する必要があるのはなぜですか?

発行すると、alias --help次のような結果が出力されます。

alias: usage: alias [-p] [name[=value] ... ]

私が理解したのは、次のようにエイリアスを入力してスクリプトファイルへの実際のパスを提供するだけです。

alias scr = /usr/local/tools/some_script.sh

しかし、エイリアスを作成するときに、2つのパスがあることがわかりました。たとえば、alias scr会社のコンピュータでコマンドを実行し、次のような出力を得ました。

alias scr = 'sudo /bin/sh /usr/local/tools/some_script.sh'

/bin/shこの場合、追加のルートを導入する目的は何ですか?

/ bin / shには、bashディレクトリへのシンボリックリンクのみが含まれています。

ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Aug  6  2017 /bin/sh -> bash

答え1

定義された別名別

alias scr='sudo /bin/sh /usr/local/tools/some_script.sh'

(周囲にスペースがあるとエラーが発生します。)呼び出しは、スクリプト=のパス名を引数として使用してシェルインタプリタを明示的に呼び出してsudoスクリプトを実行します。/usr/local/tools/some_script.sh/bin/sh

実行可能ファイルのパス名です/bin/sh(あなたの場合、指すのはシンボリックリンクですが重要ではありません)。シェルスクリプトの実行に使用されます。この場合、atのスクリプトはおそらく用に作成されたスクリプトなので、エイリアスはそのスクリプトがインタプリタとして呼び出されることを保証します。sh/binbashsh/usr/local/tools/some_script.shsh/bin/sh

スクリプトが実行可能で、#!最初の行に有効なスクリプトソルバーを指す-lineがある場合は、/bin/shこのビットを削除できます。

つまり、エイリアスを使用するとコマンドを実行できます。

/bin/sh /usr/local/tools/some_script.sh

ルートIDを入力してくださいscr

関連情報