BSD バージョンの代わりに Linux バージョンのコマンドを使用します。

BSD バージョンの代わりに Linux バージョンのコマンドを使用します。

現在、ノートブックで使用したい古いノートブックのユーティリティbashスクリプトがあります。columnコマンドに不明なオプションを渡すため失敗します。実行中ですman column。このコンピュータが使用されていることを確認しました。BSDバージョンこのスクリプトはLinuxバージョン、より多くの選択肢があります。

古い機械にはアクセスできないため、設定方法についてはあまり話せません。とても似ています新しいものに。現在、コンピュータは過去数日間に新しくインストールされたPop!OS 20.04を実行しています。

使用したい同様のコマンドを指定する明らかに正しい方法はありますか?

答え1

使用したい同様のコマンドを指定する明らかに正しい方法はありますか?

若干のリスクを負うまたこれを行う明確な方法は、スクリプトで使用したい正確な実行可能ファイルのフルパスを指定することです。

#!/usr/bin/env bash

# use the col executable in /usr/bin, not that other one:
col='/usr/bin/col'

$col ... ... ...

@muruが指摘したように、別のアプローチは、使用col()したい特定のバイナリを呼び出す関数を宣言することです。

#!/usr/bin/env bash

# use the col executable in /usr/bin, not that other one:
col()
{
  /usr/bin/col "$@"
}

col ... ... ...

答え2

たとえば、目的のバージョンを含むディレクトリが望ましくないバージョンを含むディレクトリの前になるようにtype -a columnディレクトリを並べ替えて、そのバージョンを見つけます。$PATHその後、rehashコマンドを実行します。

PATH編集が面倒です。自分がしていることがわからない限り、内容なしにPATH=課題を実行しないでください。$PATH

私は2000年にLinux Journalで説明されているStephen Collyerのbash_path_funcsを使います。

https://www.linuxjournal.com/article/3645 https://www.linuxjournal.com/article/376​​ 8 https://www.linuxjournal.com/article/3935

addpathこの関数は、最初にそのエントリがパスに存在しない場合にのみパスにエントリを追加します。delpath -nパスに存在しないディレクトリを削除します。

pathfunc.tgzからファイルを受け取ることができます。https://web.archive.org/web/20061210054813/http://www.netspinner.co.uk:80/Downloads/pathfunc.tgz

関連情報