web-dev-qa-db-ja.com

bashスクリプトのエイリアスを作成する

だから私は実験して_alias.bashrcに作成しました。ただし、コマンドをテストすると、次のようになります。

[rkahil@netmon3 ~]$ menu
-bash: menu: command not found

これが.bashrcファイルにあるものです。

# Source global definitions

if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

# User specific aliases and functions
alias menu='./menuScript.sh'
alias vi='vim'

面白いのは、エイリアスviを作成したときに機能したことです。しかし、メニューにはありません。 UnixStackExchangeで以前の投稿を調べ、他の投稿をフォローしようとしましたが、役に立ちませんでした。他に誰か提案がありますか?

10
ryekayo

alias menu='bash ./menuScript.sh'。現在Linuxマシンを使用していないため、自分でテストすることはできませんが、動作するはずです。エイリアスを呼び出すと、パスの処理方法がわからないため、最初にbashを含める必要があります。

また、端末をリセットすると、変更後に役立ちます。

9
Con7e

あなたがするとき

alias menu='./menuScript.sh'

「そのファイル」と言うエイリアスを作成しますが、実際にそれをどうするかは言いません。

ただし、

alias menu='source ./menuScript.sh'

または

alias menu='. ./menuScript.sh'

runそのファイルと言っています。

7
Michael Durrant

変更を行った後、〜/ .bashrcファイルを入手することを覚えていますか?変更は、コンピューターを再起動した後、または単にファイルを調達した後に.bashrcファイルに反映されるためです。

6
cbora

vimで動作するのは、直接パスなしですでに呼び出し可能なプログラムであるためです。 vimは既に1つなので、「これをプログラムとして実行してほしい」と明示的に言う必要はありません。コマンドvimを受け取ったときに、ファイル/usr/bin/viまたは実際のプログラムがどこにあっても、OSにハードコードされています。

0

エイリアスには2つの問題があります

alias menu='./menuScript.sh'
  1. エイリアスを呼び出すときは、特定のディレクトリにいる必要があります。 menuScript.shが存在しないディレクトリにいる場合、エイリアスの実行は失敗します。

    エイリアスを定義するときに、menuScript.shスクリプトへの完全な絶対パスを指定した方がよいでしょう。

    alias menu="$HOME/local/bin/menuScript.sh"
    

    または類似。

  2. 他の人がすでに言ったように、エイリアスが失敗するもう1つの理由は、スクリプトが実行可能でないか、無効な#!- lineがあることです。スクリプトが実行可能であることを確認してください

    chmod +x menuScript.sh
    

    スクリプトの最初の行は

    #!/bin/bash
    

    または、システム上のbash(またはスクリプトが記述されたシェル)へのパスです。

0
Kusalananda