まず、私はOSX10を使用しています。私のデフォルトのシェルはBASHです。ターミナルエミュレータを開くと、FISHシェルが自動的に実行されるように設定しました(.profileと.bashrcを介して)。これにより、FISHをロードする前にBASHで変数などを設定できます。
しかし、時にはFISHシェルでBASH用に書かれたスクリプトを実行したいことがあります。これは、FISHがBASHと構文的に互換性がないために必要です。私のFISHに「bash」と入力すると、私が開いたBASHは私の.profile / .bashrcのために自動的に別のFISHを開きます。これは、2番目のFISHの上にあるBASHに入るには、一番上でFISHを終了する必要があるため、すべてを見逃すようにします(愚かな意図)。
私の質問は、BASHがログインシェル(.profile実行)と非ログインシェル(.bashrc実行)としてロードできることです。 FISH内でBASHを実行するときにロードするように設定できる3番目の「コンテキスト」を追加できますか? .bashrcまたは.profileをロードできないため、デュアルFISHの問題が解決されます。
私の質問を理解してください。答えてくれてありがとう!
答え1
fish
「in」を指し始める変数をスクリプトで設定できますfish
。
export IN_FISH=yes
その後、その前にすでに設定されていることを確認してください。
if [ "${IN_FISH}" != "yes" ]; then
export IN_FISH=yes
fish # replace with the command you use to start fish
fi
したがって、最初の項目にはbash
設定IN_FISH
がないため、設定および開始fish
されます。bash
FISHから始めたら、すでにIN_FISH
設定されているので、もう一度bash
始めないでfish
ください。
答え2
また、次のように挿入して明示的にBASHを使用するようにスクリプトを編集できると思いました。
#!/pathtobash/
スクリプトの最初の行に
たとえば #!/bin/bash
または明示的に作成する
/pathtobash/scripttorun
たとえば、/bin/bash/scripttorun を呼び出します。