質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

zsh

zshは、UNIX系OSのシェルの1つです。 cshやksn系のコマンドライン編集機能も実装されたシェルです。

Q&A

解決済

1回答

1344閲覧

macのシェルをbashからzshに変えてからshコマンドが省略できません

etemon

総合スコア19

bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

zsh

zshは、UNIX系OSのシェルの1つです。 cshやksn系のコマンドライン編集機能も実装されたシェルです。

0グッド

1クリップ

投稿2020/09/11 23:28

編集2020/09/12 01:15

Catalinaがzshを標準にしたらしいので使っていたbashをzshに変えたのですが、シェルスクリプトを実行する際にshコマンドが省略できなくなっているのを気づきました。

例えばjisakuというシェルスクリプトがあるとすると

# 実行できる % sh jisaku # 実行できる % ./jisaku # 実行できない # zsh: command not found: jisakuとなる % jisaku

パソコンに自作コマンドを入れてパス通している場合とかは、これじゃ使えなくありませんか?自作コマンドパス通している時にはどうやって使ったらいいでしょうか?
だれか教えていただけたらすごく助かりますm(_ _)m

補足
今回追加した自作コマンドに関する情報をもう少し詳しく補足させていただきました。
zshにしてからhogeというコマンドでテストしています。
詳細は下記です。

# パス確認 % echo $PATH /Users/kimsungmin/.pyenv/shims:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:~/myCommands:~/Desktop/hoge # パス追加 % cat ~/.zshrc eval "$(pyenv init -)" export PATH="$PATH:~/myCommands" export PATH="$PATH:~/Desktop/hoge" # hogeコマンドの内容 % cd ~/Desktop/hoge % cat hoge #! /bin/zsh echo "hogehoge" # 実際コマンドを叩いたら、、 % hoge zsh: command not found: hoge # shを付けたら普通に動きます。 % sh hoge hogehoge # ちなみにwhichはbashの時もzshの時も同じく出ないです。 % which hoge hoge not found

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hidezzz

2020/09/11 23:40

shが省略できないというシェルスクリプトの1行目(いわゆるshbangと呼ばれる部分)にはどのようになっていますか? Mac使ってないので、正しくはどう書けばいいのかを具体的に指摘することは出来ませんが、 「#! /bin/bash」のような風になっているはずで、そこにフルパスで書かれているシェルが実行可能でなければいけないはずです。
etemon

2020/09/11 23:50

zshになってからは #!/bin/zsh を使っています。 ちなみに右端をbashにしてもshにしても同じ症状です。
hidezzz

2020/09/11 23:58

ちょっと自分が質問文を見誤ってましたが、「./jisaku」が実行できるのならshebangは正しいはずですね。@otnさんが指摘されているPATH指定のほうをもう少し調査したほうが良い気がします。(jisakuスクリプトのほうにPATHが通ってないと質問文で提示されている状態になると思うので。)
etemon

2020/09/12 00:07

echo $PATHで確認しても通したパスには問題ないように見えます、、 なんでzshに変えたらこんな症状が出るんですかね、、ググっても同じような情報も出てこないのもおかしいですね
etemon

2020/09/12 00:13

ん〜やはりパスを通したコマンドも前にsh付けないと起動しないですね〜bashの時みたいにファイル名をそのままコマンドにはできないですね。bashってこんなもんですかね?
Daregada

2020/09/12 00:58

「echo $PATH」の内容を質問文に公開する。 「which シェルファイル名」の結果を質問文に公開する。 「~/.zshrc」の内容を質問文に公開する。 あたりを行なわないと、「自分ではちゃんと設定したつもりだが動かない」以上の情報が、回答者には伝わりません。
etemon

2020/09/12 01:16

すみません、もう少し詳しく追加してみました。 こちらでいかがでしょうか?
hidezzz

2020/09/12 01:21 編集

> export PATH="$PATH:~/Desktop/hoge" を export PATH="$PATH:$HOME/Desktop/hoge" に変えるとどうなりますか?
etemon

2020/09/12 01:25

動きました!!! 感謝です!!!泣
etemon

2020/09/12 01:27 編集

もともとはhogeではなく~/myCommandsにパスを通したかったのですがこれも$HOMEにしたら無事動いてくれました! bashの時はbash_profileに~/って書いても動いたのでここはまったく疑っておりませんでした!
etemon

2020/09/12 01:31

回答してくださったら、ベストアンサーにします!
hidezzz

2020/09/12 01:44

お気持ちだけありがたくいただきます。 今回は問題点をいち早く指摘された @otnさんの回答がベストアンサーにふさわしいと自分は思います。
Daregada

2020/09/12 01:54 編集

> bashの時はbash_profileに~/って書いても動いたのでここはまったく疑っておりませんでした! bashでも"~/myCommands" と""で囲んだら~をホームディレクトリに置換する機能は動作しません。 「echo $PATH」をbashで実行すると、「~」がそのまま含まれたPATHが表示されるのでは。""の中で展開されるのは、$HOMEのような変数展開などシェルの展開機能の一部だけです。 で、bashの場合は(展開されていない)「~/hogehoge」でも、hogehogeの中を検索してくれます。
guest

回答1

0

ベストアンサー

そのディレクトリにPATHが通ってないのでしょう。
.bash_profile(か.bashrc)に書いてあるPATH設定を、.zlogin(か.zshrc)にも入れましょう。

投稿2020/09/11 23:38

otn

総合スコア85901

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

etemon

2020/09/11 23:48

すみません、補足が足りませんでした。 ~/.zshrcにパスを通してもダメです。 bashの時は~/.bash_profileにパス通していてうまく動いたのですが、、
Daregada

2020/09/12 00:57 編集

「~/.zshrcにパスを通す」という言い方は通常しないので、これを読んでいる人が不安になります。「パスを通す」という用語は、通常は「ディレクトリ(フォルダー)」に対して行ないます。
etemon

2020/09/12 01:21

あいまいな日本語で失礼しました。 「~/.zshrcにパスを通す命令を入れた?」がより近いですかね、、
Daregada

2020/09/12 02:11 編集

「~/.zshrcで、XXX(ディレクトリ)にパスを透してあります」とかですかね。 今回だと、最初から質問に「export PATH="$PATH:~/myCommands"」と「export PATH="$PATH:~/Desktop/hoge"」を書いてくれれば、もっと早く解決しましたね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問