アプリ版:「スタンプのみでお礼する」機能のリリースについて

$ vim q3.sh
$ chmod +x q3.sh
$ q3.sh 5
-bash: q3.sh: command not found
$ ./q3.sh ex
Error
$ cat q3.sh
#!/bin/bash

if [[ "$1" =~ ^[1-9][0-9]*$ && "$1" -gt 1 ]]
then
for((i=1; i<=$1; ++i))
do
mkdir -p dir$i/dir$i$i
touch dir$i/dir$i$i/file$i$i$i
done
else
echo "Error"
fi

1以上の引数の場合の実行の仕方及び実行結果はどのように書けますでしょうか。
「$ q3.sh 5
-bash: q3.sh: command not found」がうまくできません。

dir<n>/dir<n><n>/file<n><n><n>(<n>は数値)が作成されるイメージです。
宜しくお願い致します。

A 回答 (2件)

ご質問者様の"ログインシェル"はbashと思われますが、例えば次のコマンドを実行してください。


$
$ echo $PATH
-------:--------:----------:--------:------
$
などとコロン":"で区切られた沢山のパスが表示されるはずです。この中に".(ピリオド一つ)"があれば『カレントディレクトリにpathが通っている。』ことになります。
PATH環境変数を設定するのは通常は"$HOME/.profile"ファイルであると思われます。

但し、但し『カレントディレクトリにpathを通す。』ことはセキュリティの観点からお止めになることを強くお勧めします。
もし『カレントディレクトリにpathを通す。』してしまうと、複数のアカウントが共有するディスク領域に於いて、悪意あるアカウントが例えば"ls"という名のシェルスクリプトを作成した時、この罠に気づかない別の誰かが"ls"コマンドを実行した時、"/bin/ls"ではなく"./ls"が実行される『可能性があります』。もし"./ls"スクリプトの中身が...

chmod -R a+rwx $HOME
mail ... ToBadGuy ..."やったぜ! `echo $USER`" ...
ls

等となっていれば一気にこのユーザの権利は乗っ取られることになります。もちろんrootがこの罠にハマると、一瞬にしてPC全体のセキュリティは損なわれます。

そこでどうすればよいかですが、私の".profile"ファイルではデフォルトで...

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi

となっています。つまり「ホームディレクトリの直下に"bin"ディレクトリを作り、その中に実行ファイルを入れ」ておけば最初からpathは通ってますよ、ということです。
長々と関係のないことをご説明しました、お許しください。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
理解力不足で、、、
私の場合はどのように対応したらよいのでしょうか。
ご教授お願い致します。

お礼日時:2022/11/18 09:25

実行NG $ q3.sh 5


――のほうは環境変数PATHにカレントディレクトリが含まれてないのかと。(なので実行NGになる。)
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
実際どのように修正したらよいでしょうか。

お礼日時:2022/11/17 21:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!