スクリプトでコマンドの代わりにエイリアスを使用できますか?


8

コマンドのエイリアスがあります(Python開発環境をセットアップしています)

alias python=~/virtualenv/bin/python

~/virtualenv/bin/python入力するだけで実行できるようにしますpython。今私のプロジェクトには、例えば行くシェルスクリプトがあります:

#!/bin/sh
python run-project.py

スクリプトに変更を加えずに、スクリプトがで検出しpythonたエイリアスの代わりにエイリアスを使用するようにできますか?python$PATH


4
興味がないのに、なぜPATHを変更できないのですか?PATHを変更し#!/usr/bin/env pythonてPythonスクリプトの先頭に配置する方が簡単なようです。
ミケル

@Mikelこれはあなたの他の答えよりも優れています。ただし、コメントは受け付けません。
phunehehe

その提案を含めるように回答を更新しました。
ミケル

回答:


7

はい。

エイリアスをに入れると~/.aliases、次のことができます

export BASH_ENV="~/.aliases"
somescript

これは、スクリプトで始まると仮定し#!/bin/bashているため、#!/bin/sh少し少なめに予測可能です。

これが私が提案するものです:

  1. 〜/ .bashenvを作成する
  2. スクリプトで作業するすべての設定を〜/ .bashrcから〜/ .bashenvに移動します
  3. これを〜/ .bashrcの上部に追加します。
    [ -f ~/.bashenv ] && source ~/.bashenv
  4. BASH_ENV=~/.bashenv/ etc / environmentに入れます
  5. スクリプト#!/bin/bashがまだ開始されていない場合は、スクリプトを開始させる

または、zshを使用している場合は、エイリアスを〜/ .zshenvに移動します。zshはそのファイルを自動的に調べます。


しかし、おそらく~/virtualenv/binの前に置くだけでPATH、Pythonスクリプトを#!/usr/bin/env python最初の行として持つように変更する方が簡単かもしれません。


あなたが意味するものではありません。~/.bashenvステップ4で?
cjm 2011年

だから私はから、とにかくスクリプトを変更する必要があります#!/bin/sh#!/bin/bash?できますbash my-scriptか?
phunehehe 2011年

phunehehe:はい、bash my-scriptステップ1〜4を実行すればうまくいくと思います。
ミケル

スクリプトでエイリアスを使用することはお勧めしません。他の誰かがスクリプトを実行した場合、sudoまたは他の特権昇格方法でスクリプトを実行した場合は機能しません。そしてそれはあなたが永久にvirtualenv持っ~/virtualenv/binていないことの主なポイントである実行ごとに変更することを許可しませんPATHPATH必要なときにの前にディレクトリを追加するのが最善の方法です。
Gilles 'SO-悪をやめる'

4

エイリアスファイルが " 〜/ .bash_aliases "であるとすると、これをスクリプトに追加します。

#!/bin/bash
shopt -s expand_aliases
source ~/.bash_aliases
python run-project.py

経由


0

または、常にsourceスクリプトでエイリアスを強制的に使用することもできます。たとえば、にのエイリアスがあるとrmします~/.bashrc

alias rm='moveToTrash'

whileはのmoveToTrashプログラム/usr/binです。これで、次のtest.bashような名前のスクリプトができました。

#!/bin/bash

which rm

場合はtest.bash直接実行され、あなたは出力を見ることができる/bin/rm一方で、source test.bash出力が得られます

alias rm='moveToTrash'
    /usr/bin/moveToTrash
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.