OS X - Створіть персональний каталог бін (~ / bin) та запустіть сценарії, не вказуючи їх повний шлях


19

Отже, те, що я намагаюся зробити, - це створити особистий binкаталог у моїй домашній папці. Я створив таку папку:

/Users/thi/bin

Я розміщую свої сценарії в цій папці, але якщо я ввожу термінал:

myScript

Він не працює.

Мені сказали, що я повинен експортувати цей шлях для сміття, щось пов’язане echo $PATH, але я не знаю, як це зробити.


див. також до кінця apple.stackexchange.com/a/98626
nohillside

Відповіді:


20

У файл потрібно додати наступне ~/.profile:

export PATH=/Users/thi/bin:$PATH

Потім source ~/.profile

Зауважте, що вам може знадобитися створити цей файл, і тому, що він починається з a, .він може бути не видно у пошуку, для редагування через програму, наприклад текстовий редактор. Щоб перелічити всі файли, включаючи приховані, використовуйте:

ls -la ~/

Якщо я додаю експорт PATH = / Users / thi / bin: $ PATH до мого .bashrc-файлу, чи буде це працювати? Це правильно?
Thi G.

12
Краще використовувати $HOME/binзамість /Users/thi/bin. Потім ви зможете скопіювати свої налаштування на іншу машину, де ваше ім’я користувача може бути іншим.
lhf

Якщо я введіть термінал: PATH = $ HOME / bin: $ PATH, а потім наберіть: експортуйте PATH. Чи це зробить трюк?
Thi G.

1
Якщо ви це зробите, це змінить налаштування зараз, але не на майбутніх черевиках. Щоб змінити шлях, який пережив перезавантаження, потрібно включити ці команди у свій .profileфайл.
Даніель

1
Чудово, дякую всім за відповіді. Я додав export PATH=$HOME/bin:$PATHдо свого $HOME/.bash_profile.
Thi G.

10

Якщо ви використовуєте bash, додайте такий рядок до ~/.bash_profile:

PATH=~/bin:$PATH

PATHпозначається для експорту за замовчуванням, тому не потрібно використовувати export.

Якщо і те ~/.bash_profileй інше ~/.profileіснує, bash читає лише ~/.bash_profileтоді, коли його викликають як інтерактивну оболонку входу. ~/.profileтакож використовується іншими оболонками, які можуть не розуміти ті ж параметри конфігурації, що і bash.

Термінал та iTerm 2 відкривають нові оболонки як оболонки для входу за замовчуванням. Коли bash викликається як інтерактивна оболонка входу, вона читається, ~/.bash_profileале ні ~/.bashrc. Емулятори терміналів на інших платформах часто відкривають нові оболонки як оболонки без входу, так, наприклад, bash читає, ~/.bashrcале ні ~/.bash_profile. Користувачі OS X часто використовують ~/.bash_profileособистий файл конфігурації, відповідний ~/.bashrcна інших платформах, однак також часто зустрічається джерело ~/.bashrcз ~/.bash_profileабо повідомляти Terminal або iTerm 2, щоб відкрити нові оболонки як оболонки без входу.

Ви також можете змінити шлях більш глобально в /etc/pathsабо /etc/launchd.conf, але в багатьох випадках шлях буде по- , як і раніше по замовчуванням /usr/bin:/bin:/usr/sbin:/sbin. І мені справді потрібно було лише змінити шлях в оболонках та текстових редакторах.


Чудово, дякую за відповідь. Я додав export PATH=$HOME/bin:$PATHдо свого $HOME/.bash_profile.
Thi G.

Вам не потрібен експорт , і обидва ~(коли вони не котируються), і $HOMEрозгортаються перед призначенням змінної як при використанні експорту, так і в простому призначенні.
Lri

Лаурі Ранта, що ви віддаєте перевагу особисто, .bash_profileчи .profile? Або у вас є .bashrcдомашній каталог?
Thi G.

Раніше я використовував лише .bash_profile, але тепер я використовую .bashrc як основний файл конфігурації, а мій .bash_profile просто містить . ~/.bashrc. Нові оболонки відкриваються як оболонки без входу в режимі оболонки в emacs та tmux. Я б не використовував .profile як основний файл конфігурації, оскільки його також читають інші оболонки, наприклад ksh.
Лрі

3

Зазвичай ви додасте додаткові шляхи після $PATHподібного, PATH=$PATH:/$HOME/binтому що, якщо ви не хочете замінити інший виконуваний файл з таким же ім'ям, який може бути у /bin, тощо.


4
Можна легко стверджувати, що ви ставите $HOME/binна початку саме з цієї причини. Але ключовим є те, що порядок каталогів у $PATHпитаннях і що оболонка вибере першу команду узгодження. Дякуємо, що вказали на це.
nohillside
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.