次のコマンドを使用してスクリプトを実行しようとします。
nohup . test.sh
そして
nohup . ./test.sh
しかし、私が得ることはnohup: failed to run command `.': Permission denied
毎回です。
私が本当に望むのは、スクリプトで別名を指定したコマンドを呼び出すことです。ただし、" . test.sh
"または" . ./test.sh
"でのみ機能し、" ./test.sh
"または" sh ./test.sh
"では機能しません。なぜなら、「command not Found」というメッセージが表示されるからです。しかし、「nohup」を使って実行できるようにしたいです。
答え1
nohup
実行ファイルを実行します。外部コマンド、つまり実行可能ファイルを渡す必要があります。nohup
エイリアス、関数、組み込み関数などのシェル設定は呼び出すことはできません。nohup
新しいプロセスを実行すると、既存のシェルプロセス内で何かが実行されないため(別々nohup
のプロセス自体であるため)、nohup . …
何の意味もありません。
nohup ./test.sh
nohupを使用してシェルスクリプトを実行する正しい方法です。スクリプトがshebang行で正しく起動していること(#!/bin/sh
)、ファイルが実行可能であること(chmod +x ./test.sh
)を確認してください。