発行すると、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
/bin
bash
sh
/usr/local/tools/some_script.sh
sh
/bin/sh
スクリプトが実行可能で、#!
最初の行に有効なスクリプトソルバーを指す-lineがある場合は、/bin/sh
このビットを削除できます。
つまり、エイリアスを使用するとコマンドを実行できます。
/bin/sh /usr/local/tools/some_script.sh
ルートIDを入力してくださいscr
。