だからhomebrewを介してGNU findをインストールしました。その後、「find」というエイリアスを作成し、それをGNU findとして指定しました。
~
➜ alias | grep find
find=/usr/local/bin/gfind
tree='find . -print | sed -e '\''s;[^/]*/;|____;g;s;____|; |;g'\'
~
➜ which find
find: aliased to /usr/local/bin/gfind
~
➜ find --version
find (GNU findutils) 4.7.0
Copyright (C) 2019 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by Eric B. Decker, James Youngman, and Kevin Dalley.
Features enabled: D_TYPE O_NOFOLLOW(enabled) LEAF_OPTIMISATION FTS(FTS_CWDFD) CBO(level=2)
私の問題は、スクリプト(bashおよびZSHの試み)内で「find」コマンドを使用するときに、スクリプトが常にAppleから提供されたfindコマンドを使用しようとしていることです。
問題を解決する方法についてのアイデアはありますか?ありがとうございます。
これは私のサンプルスクリプトです。
#!/bin/bash
source ~/Documents/environment-setup.sh
alias | grep find
which find
echo "running find --version"
find --version
echo "running gfind --version"
gfind --version
これはスクリプトの出力です。
~
➜ ./test.sh
alias find='/usr/local/bin/gfind'
/usr/bin/find
running find --version
find: illegal option -- -
usage: find [-H | -L | -P] [-EXdsx] [-f path] path ... [expression]
find [-H | -L | -P] [-EXdsx] -f path [path ...] [expression]
running gfind --version
find (GNU findutils) 4.7.0
Copyright (C) 2019 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by Eric B. Decker, James Youngman, and Kevin Dalley.
Features enabled: D_TYPE O_NOFOLLOW(enabled) LEAF_OPTIMISATION FTS(FTS_CWDFD) CBO(level=2)
ベストアンサー1
ZSHとBASHは異なるシェルなので、違いが多い場合がありますのでご注意ください。あなたの例には2つの問題があります。
質問1:どれですか?
どのBashには組み込みコマンドはありませんが、zshにはあります。なぜならどの組み込みコマンドではなく、エイリアスを確認できます。
使用する必要がありますタイプ
タイプ両方に組み込まれたコマンドです。
存在する強く打つ
MyMAC:tmp e444$ bash -l
MyMAC:tmp e444$ type which
which is /usr/bin/which
MyMAC:tmp e444$ type type
type is a shell builtin
存在するZTE
MyMAC:tmp emas$ zsh -l
MyMAC% type which
which is a shell builtin
MyMAC% type type
type is a shell builtin
質問2:エイリアス
BASHでは、デフォルトでは非対話型シェル(スクリプト)ではエイリアスは拡張されません。
~からman bash
シェルが非対話型の場合、エイリアスは以下を除いて拡張されません。
ZSH では、別名が拡張されます。
Bashの小さな例b.shとZSHz.sh
ファイルb.sh
#!/bin/bash
mysql -v
alias mysql='/usr/local/Cellar/mysql55/5.5.30/bin/mysql'
mysql -v
MyMAC:tmp e444$ ./b.sh
./b.sh: line 2: mysql: command not found
./b.sh: line 4: mysql: command not found
ファイルz.sh
#!/bin/zsh
mysql -v
alias mysql='/usr/local/Cellar/mysql55/5.5.30/bin/mysql'
mysql -v
MyMAC:tmp e444$ ./z.sh
./z.sh:2: command not found: mysql
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)